O que significa Contexto no Android (em palavras simples) e ContextWrapper?
Pradhan Rishi Sharma'a resposta de O que é um contexto em Java?
Apenas para lhe dar uma analogia em termos não programáticos, pense desta forma: você está tendo um sonho e você acorda dele por um idiota hipnótico. A mudança imediata do ambiente para o seu cérebro pode ser denominada como mudança de contexto. O estado em que seu cérebro está funcionando atualmente (sonho ou realidade) é um contexto.
Agora na programação andróide o contexto é o estado atual da aplicação/objeto. Ele permite que objetos recém-criados entendam o que tem acontecido. Tipicamente você o chama para obter informações sobre outra parte do seu programa (atividade e pacote/aplicação).
Diferentes métodos de invocação pelos quais você pode obter contexto
1. getApplicationContext(),
2. getContext(),
3. getBaseContext()
4. ou isto (quando na classe de atividade).
Agora que você entende contexto vamos pular para ContextWrapper, como diretamente do site do desenvolvedor andróide "Proxying implementation of Context que simplesmente delega todas as suas chamadas para outro Contexto". Pode ser subclassificado para modificar o comportamento sem alterar o Contexto original"
A diferença entre ContextWrapper e ContextWrapper pode ser entendida olhando para os valores de retorno destes diferentes métodos
- View.getContext(): Retorna o contexto no qual a vista está rodando atualmente. Normalmente a Atividade atualmente ativa.
- Activity.getApplicationContext(): Retorna o contexto para toda a aplicação (o processo no qual todas as Atividades estão rodando dentro). Use isto ao invés do contexto da Atividade atual se você precisar de um contexto ligado ao ciclo de vida da aplicação inteira, e não apenas da Atividade atual.
- ContextWrapper.getBaseContext(): Se você precisar de acesso a um Contexto de dentro de outro contexto, você usa um ContextWrapper. The Context referred to from inside that ContextWrapper is accessed via getBaseContext().
- this : Returns the context the view (I hope you know about view, if not refer view first). Usually the currently active Activity.
Hope this helps.