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.
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 de
Context', 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, ...);
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.
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.