Cosa puoi dirmi sul ciclo di vita di un'Activity in Android?
sobes.tech AI
Risposta dell'AI
Il ciclo di vita di Activity è un insieme di stati e transizioni tra essi, attraverso i quali passa ogni istanza di Activity dal momento della creazione fino alla distruzione. È definito da un insieme di metodi callback.
I principali metodi callback del ciclo di vita:
onCreate(): Viene chiamato alla prima creazione di unActivity. Qui avviene l'inizializzazione dell'interfaccia utente, il binding dei dati e altre azioni una tantum.onStart(): Viene chiamato quando lActivitydiventa visibile all'utente, ma non ha ancora ricevuto il focus.onResume(): Viene chiamato quando lActivityriceve il focus e diventa attiva. Qui di solito iniziano animazioni e altre azioni interattive.onPause(): Viene chiamato quando lActivityperde il focus, ma è ancora visibile (ad esempio, una finestra di dialogo semi-trasparente sopra di essa). Qui si dovrebbero fermare le operazioni che consumano risorse.onStop(): Viene chiamato quando lActivitynon è più visibile all`utente. Qui si salvano i dati non salvati e si liberano le risorse che non sono più necessarie.onDestroy(): Viene chiamato prima che lActivityvenga distrutta. Qui si liberano tutte le risorse residue.onRestart(): Viene chiamato dopoonStop()quando lActivityviene mostrata di nuovo. SegueonStart().
Graficamente, il ciclo di vita può essere rappresentato così:
Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed
Esistono anche transizioni:
- Created -> Started (dopo
onStart()) - Started -> Resumed (dopo
onResume()) - Resumed -> Paused (quando perde il focus)
- Paused -> Resumed (quando riceve di nuovo il focus)
- Paused -> Stopped (quando viene completamente nascosta)
- Stopped -> Destroyed (quando termina l`attività)
- Stopped -> Restarted -> Started (dopo
onRestart())
È importante gestire correttamente lo stato di Activity in questi metodi callback per evitare perdite di memoria e garantire un comportamento corretto dellapplicazione durante le modifiche di configurazione o il passaggio tra Activity`.
Per salvare lo stato si utilizza onSaveInstanceState() (prima di onStop()) e il ripristino avviene in onCreate() o onRestoreInstanceState() (dopo onStart()).
Esempio di utilizzo di onSaveInstanceState():
// Salvataggio dello stato
override fun onSaveInstanceState(outState: Bundle) {
outState.putString("my_data", "some_value")
super.onSaveInstanceState(outState)
}
// Ripristino dello stato
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
if (savedInstanceState != null) {
val myData = savedInstanceState.getString("my_data")
// Usare myData
}
}