Sobes.tech
Junior

Quali metodi del ciclo di vita dell'Activity conosci e come vengono eseguiti?

sobes.tech AI

Risposta dell'AI

  • onCreate(): Viene chiamato alla prima creazione dell'Activity. Usato per inizializzare l'interfaccia utente e i dati.
  • onStart(): L'Activity diventa visibile all'utente.
  • onResume(): L'Activity diventa attiva e si trova in primo piano. L'utente può interagire con essa.
  • onPause(): Viene chiamato quando l'Activity passa in secondo piano o un'altra Activity la copre parzialmente. Usato per salvare lo stato che deve essere rapidamente ripristinato.
  • onStop(): L'Activity non è più visibile all'utente. Usato per liberare risorse non utilizzate.
  • onDestroy(): Viene chiamato prima che l'Activity venga distrutta. Usato per pulire le risorse finali.
  • onRestart(): Viene chiamato dopo onStop(), quando l'Activity diventa di nuovo visibile.

Sequenza di esecuzione dei metodi all'avvio: onCreate() -> onStart() -> onResume().

Sequenza di esecuzione passando in secondo piano (ad esempio, premendo il pulsante Home): onPause() -> onStop().

Sequenza di esecuzione tornando dal background: onRestart() -> onStart() -> onResume().

Sequenza di esecuzione distruggendo l'Activity: onPause() -> onStop() -> onDestroy().

Quando si ruota lo schermo, l'Activity viene distrutta e ricreata. Sequenza: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume(). Per salvare lo stato si usa onSaveInstanceState() (chiamato prima di onStop()) e il ripristino in onCreate() o onRestoreInstanceState() (chiamato dopo onStart()).

class MyActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main) // Inizializzazione UI
        // Ripristino stato da savedInstanceState
    }

    override fun onStart() {
        super.onStart()
        // L'Activity diventa visibile
    }

    override fun onResume() {
        super.onResume()
        // L'Activity è in primo piano, disponibile per interagire
    }

    override fun onPause() {
        super.onPause()
        // L'Activity passa in secondo piano
        // Salvataggio stato rapidamente ripristinabile
    }

    override fun onStop() {
        super.onStop()
        // L'Activity non è visibile
        // Rilascio risorse
    }

    override fun onDestroy() {
        super.onDestroy()
        // L'Activity viene distrutta
        // Pulizia finale delle risorse
    }

    override fun onRestart() {
        super.onRestart()
        // L'Activity ritorna dal background
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        // Salvataggio stato prima della distruzione
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        // Ripristino stato
    }
}