O que é 'Contexto' no Android?

Na programação do Android, o que é exatamente uma classe "Contexto" e para que ela é utilizada?

Eu li sobre isso no site do desenvolvedor, mas não consigo entender claramente.

Solução

Colocando-o de forma simples:

Como o nome sugere, é o contexto do estado actual da aplicação/objecto. 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).

Você pode obter o contexto invocando getApplicationContext(), getContext(), getBaseContext() ou this' (quando em uma classe que se estende deContext', como as classes Application, Activity, Service e IntentService).

Utilizações típicas do contexto:

  • Criando novos objetos: Criando novas vistas, adaptadores, ouvintes:

     TextView tv = novo TextView(getContext());
     ListAdapter adapter = novo SimpleCursorAdapter(getApplicationContext(), ...);
  • Acesso a recursos comuns padrão: Serviços como LAYOUT_INFLATER_SERVICE, SharedPreferences:

     contexto.getSystemService(LAYOUT_INFLATER_SERVICE)
     getApplicationContext().getSharedPreferences(*name*, *mode*);
  • **Acesso de componentes implicitamente***: Em relação aos provedores de conteúdo, transmissões, intenção

     getApplicationContext().getContentResolver().query(uri, ...);
Comentários (6)

Um Contexto é uma manipulação do sistema; fornece serviços como a resolução de recursos, obtenção de acesso a bases de dados e preferências, e assim por diante. Um aplicativo Android tem atividades. O Contexto é como um handle para o ambiente em que o seu aplicativo está rodando atualmente. O objeto de atividade herda o objeto Contexto.

Para mais informações, veja em Introduction to Android development with Android Studio - Tutorial.

Comentários (0)

Um Android Context é uma Interface (no sentido geral, não no sentido Java; em Java, Context é na verdade uma classe abstrata!) que permite o acesso a recursos específicos da aplicação e a informações sobre a classe e o ambiente da aplicação.

Se sua aplicação androide fosse uma aplicação web, seu contexto seria algo similar ao ServletContext (não estou fazendo uma comparação exata aqui).

Suas atividades e serviços também estendem o 'Contexto', assim eles herdam todos aqueles métodos para acessar as informações do ambiente no qual o aplicativo está rodando.

Comentários (0)