Sobes.tech
Junior

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 lActivity diventa visibile all'utente, ma non ha ancora ricevuto il focus.
  • onResume(): Viene chiamato quando lActivity riceve il focus e diventa attiva. Qui di solito iniziano animazioni e altre azioni interattive.
  • onPause(): Viene chiamato quando lActivity perde 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 lActivity non è 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 lActivity venga distrutta. Qui si liberano tutte le risorse residue.
  • onRestart(): Viene chiamato dopo onStop() quando lActivity viene mostrata di nuovo. Segue onStart().

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
    }
}