A Application Class é uma importante classe no Android. Ela é responsável pela inicialização do aplicativo e é a primeira classe a ser inicializada.
Ela é a “classe processo”, pois é instanciada assim que o aplicativo é acionado e somente uma instância dela permanece em memória enquanto o aplicativo está em execução, em foreground (primeiro plano) ou em background (segundo plano).
Você deve estar pensando: se a classe Application tem uma única instância no app, então é possível obter todas as informações do sistema relativo ao aplicativo, certo?
Então! Digamos que quase isso! Te explico: todos os dados é “muita coisa”, mas algumas informações importante é sim possível obter, por exemplo, o estado atual do consumo de memória do dispositivo.
Mas a classe Application nem é muito utilizada para isso. Ela é útil mais para criação de instância de escopo global para class que precisam ser inicializadas no início da aplicação.
Ou seja, essa instância única é muitas vezes utilizadas como uma espécie de Singleton em projetos de aplicativos Android.
Exemplo de Singleton em application
- Activity
- fragment
- Dialog
- APIs
No entanto, não podemos generalizar, primeiro você deve verificar se é possível a modularização do código, ou seja, se é possível manter o código Singleton dentro da própria classe que deverá ter a instância única, então mantenha na classe e não em uma subclass Application.
Application Class no Android: tutorial
Para configurar uma subclass Application no aplicativo Android temos que ir até o arquivo AndroidManifest.xml, e adicionar uma atributo “android:name” na tag <application>, vamos colocar o nome da classe que vamos criar (MyApplication).
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest
…>
<application
…
android:name=”.MyApplication”>
…
</application>
</manifest>
MyApplication.kt
import android.app.Application
class MyApplication: Application() {
override fun onCreate(){
super.onCreate()
//Sua implementação customizada
}
// Chamado pelo sistema quando a configuração do dispositivo muda
// enquanto o componente está em execução.
// A substituição deste método é totalmente opcional!
override fun onConfigurationChanged ( newConfig : Configuration ) {
super.onConfigurationChanged(newConfig)
}
// Isso é chamado quando o sistema geral está com pouca memória,
// e gostaria de executar processos ativamente para apertar seus cintos.
// A substituição deste método é totalmente opcional!
override fun onLowMemory() {
super.onLowMemory()
}
}
✅ Em nosso exemplo podemos ver como uma subclass Application pode ser utilizada.
Conclusão
Conseguimos aprender como configurar uma custom Application no aplicativo Android. Ainda ficou com alguma dúvida no assunto? Conta pra gente nos comentários!
Veja um um modelo de projeto já implementado no GitHub.