Toast e Intent , ambos requerem referência ao contexto . E getApplication , getApplicationContext , LoginActivity.this e getBaseContext , todos oferecem referência ao contexto.
Agora, o que confunde é a declaração de diferentes contextos e seu uso específico. Para simplificar, você deve contar dois tipos de contexto disponíveis na estrutura do Android.
- Contexto do Aplicativo
- Contexto da Atividade
O contexto do aplicativo é anexado ao ciclo de vida do aplicativo e sempre será o mesmo durante toda a vida do aplicativo. Portanto, se você estiver usando o Toast , poderá usar o contexto do aplicativo ou mesmo o contexto da atividade (ambos) porque um brinde pode ser gerado de qualquer lugar do aplicativo e não está anexado a uma janela.
O contexto da atividade é anexado ao ciclo de vida da atividade e pode ser destruído se a atividade onDestroy()
for gerada. Se você deseja iniciar uma nova atividade, é necessário usar o contexto da atividade em sua Intenção, para que a nova atividade de inicialização seja conectada à atividade atual (em termos de pilha de atividades). No entanto, você também pode usar o contexto do aplicativo para iniciar uma nova atividade, mas precisa definir o sinalizador Intent.FLAG_ACTIVITY_NEW_TASK
com a intenção de tratá-la como uma nova tarefa.
Agora, referindo-se aos seus casos:
LoginActivity.this
embora esteja se referindo à sua própria classe que estende a classe Activity, mas a classe base (Activity) também estende a classe Context, portanto, ela pode ser usada para oferecer contexto de atividade.
getApplication()
embora esteja se referindo ao objeto Application, mas a classe Application estenda a classe Context, ela pode ser usada para oferecer o contexto do aplicativo.
getApplicationContext()
oferece contexto de aplicativo.
getBaseContext()
oferece contexto de atividade.
Dicas: Sempre que você precisar manipular Views
, vá para o
Contexto da Atividade , caso contrário, o Contexto do Aplicativo será suficiente.