Uso del contexto para iniciar otra actividad
Para iniciar una Actividad necesitas una Intención, como:
Intent i = new Intent(context, class)
Así que para rellenar el parámetro de contexto, un par de opciones están disponibles:
- Recuperar el contexto de llamada en un BroadcastReceiver ()
- ¿Cómo recuperar un contexto de una clase que no sea de actividad?
- ¿Realmente necesito pasar alrededor de las instancias de contexto profundamente en la aplicación?
- ¿Por qué mi contexto en mi Fragmento es nulo?
- Cambiar el nombre de un archivo en el almacenamiento interno
- Use
MyActivity.this
o simplementethis
- Utilizar
getApplicationContext()
- Utilizar
getBaseContext()
Y estoy seguro de que hay una o dos opciones más. Todas estas opciones aparecen en algún tipo de tutorial, uno usa el primero, el siguiente utiliza la tercera opción.
Entonces, ¿cuál debo usar? ¿Incluso importa? ¿Es diferente para los diferentes casos?
- ¿Cuándo usar y no utilizar la clase de aplicación de Android?
- ¿Qué es "Contexto" en Android?
- ¿Cómo usar las Preferencias Compartidas en MVP sin Dagger y no hacer que Presenter dependa del contexto?
- Obtenga correo electrónico, ID y teléfono de contacto (no utiliza actividad)
- Técnica para obtener ApplicationContext en cualquier lugar
- Escribir / crear archivos dentro del contexto de la instrumentación de Android
- ¿Tengo fugas de contexto?
- SQlite Database: No se puede encontrar el contexto
Sí, es diferente para diferentes casos,
Depende del alcance. Suponga que si está creando un método en una clase global que extends
Application
para crear un Toast
que se usa en cada clase de su Application
, puede usar getApplicationContext()
para crearlo.
Si desea crear una vista restringida a esa Actividad en particular, puede utilizar Activity.this
Además, si desea crear un AlertDialog en alguna clase interna, diga AsyncTask
, entonces debe usar Activity.this
, ya que AlertDialog
debe estar vinculado a la Activity
sí.
También no utilice getBaseContext()
sólo use el Context
que está teniendo. Para obtener más información para el mismo, puede ver this Answer
.
Por lo tanto, la respuesta a la pregunta real es mejor usar Activity.this
para iniciar una nueva Activity
.
Intent intent = new Intent(Current_Activity.this, Calling.class); startActivity(intent);
Son diferentes con seguridad. Estos son contextos diferentes, y deben utilizarse con el menor alcance posible (contexto).
Por ejemplo, si podemos utilizar el contexto de la actividad en lugar de ApplicationContext, se debe usar el contexto de la actividad, lo mismo se aplica al contexto de la aplicación y al contexto base.
Lo haces así …
Intent intent = new Intent(); intent.setClass(MainActivity.this, SecondActivity.class); startActivity(intent);