O que pode contar-me sobre o ciclo de vida da Activity no Android?
sobes.tech IA
Resposta da IA
O ciclo de vida de uma Activity é um conjunto de estados e transições entre eles, pelos quais passa cada instância de Activity desde a sua criação até à destruição. É definido por um conjunto de métodos de callback.
Os principais métodos de callback do ciclo de vida:
onCreate(): É chamado na primeira criação daActivity. Aqui, ocorre a inicialização da interface de utilizador, ligação de dados e outras ações únicas.onStart(): É chamado quando aActivityse torna visível ao utilizador, mas ainda não recebeu foco.onResume(): É chamado quando aActivityrecebe foco e torna-se ativa. Aqui, normalmente, começam animações e outras ações interativas.onPause(): É chamado quando aActivityperde foco, mas ainda é visível (por exemplo, uma caixa de diálogo semi-transparente por cima). Aqui, deve-se parar operações que consomem recursos.onStop(): É chamado quando aActivitydeixa de ser visível ao utilizador. Aqui, guardam-se dados não salvos e libertam-se recursos que já não são necessários.onDestroy(): É chamado antes de aActivityser destruída. Aqui, libertam-se todos os recursos restantes.onRestart(): É chamado apósonStop()quando aActivityvolta a ser exibida. Segue-se-lheonStart().
Gráficamente, o ciclo de vida pode ser representado assim:
Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed
Existem também transições:
- Created -> Started (após
onStart()) - Started -> Resumed (após
onResume()) - Resumed -> Paused (quando perde foco)
- Paused -> Resumed (quando recupera foco)
- Paused -> Stopped (quando fica completamente oculta)
- Stopped -> Destroyed (quando a atividade termina)
- Stopped -> Restarted -> Started (após
onRestart())
É importante gerir corretamente o estado da Activity nestes métodos de callback para evitar fugas de memória e garantir um comportamento correto da aplicação ao alterar a configuração ou alternar entre Activity. Para guardar o estado, usa-se onSaveInstanceState() (antes de onStop()) e a restauração ocorre em onCreate() ou onRestoreInstanceState() (após onStart()).
Exemplo de uso de onSaveInstanceState():
// Guardar estado
override fun onSaveInstanceState(outState: Bundle) {
outState.putString("my_data", "some_value")
super.onSaveInstanceState(outState)
}
// Restaurar estado
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
if (savedInstanceState != null) {
val myData = savedInstanceState.getString("my_data")
// Usar myData
}
}