Brindis e intención , ambos requieren referencia al contexto . Y getApplication , getApplicationContext , LoginActivity.this y getBaseContext , todos ofrecen referencias al contexto.
Ahora lo que confunde es la declaración de diferentes contextos y su uso específico. Para simplificar las cosas, debe contar dos tipos de contexto disponibles en el marco de Android.
- Contexto de la aplicación
- Contexto de actividad
El contexto de la aplicación se adjunta al ciclo de vida de la aplicación y siempre será el mismo durante toda la vida de la aplicación. Entonces, si está utilizando Toast , puede usar el contexto de la aplicación o incluso el contexto de la actividad (ambos) porque se puede hacer un brindis desde cualquier lugar dentro de su aplicación y no se adjunta a una ventana.
El contexto de la actividad se adjunta al ciclo de vida de la actividad y puede destruirse si onDestroy()
se eleva la actividad . Si desea lanzar una nueva actividad, debe utilizar el contexto de la actividad en su Intención para que la nueva actividad de lanzamiento esté conectada a la actividad actual (en términos de pila de actividades). Sin embargo, también puede usar el contexto de la aplicación para iniciar una nueva actividad, pero luego debe establecer una marca Intent.FLAG_ACTIVITY_NEW_TASK
con la intención de tratarla como una nueva tarea.
Ahora refiriéndose a sus casos:
LoginActivity.this
aunque se refiere a su propia clase que extiende la clase de actividad, pero la clase base (Actividad) también extiende la clase de contexto, por lo que puede usarse para ofrecer contexto de actividad.
getApplication()
aunque se refiere al objeto Aplicación, pero la clase Aplicación amplía la clase Contexto, por lo que se puede utilizar para ofrecer contexto de aplicación.
getApplicationContext()
ofrece contexto de aplicación.
getBaseContext()
ofrece contexto de actividad.
Consejos: Siempre que necesite manipular Views
, elija
Actividad-Contexto , de lo contrario, la Aplicación-Contexto sería suficiente.