Sobes.tech
Junior

Ce poți să ne spui despre ciclul de viață al unei Activity în Android?

sobes.tech AI

Răspuns de la AI

Ciclul de viață al Activity este un set de stări și tranziții între acestea, prin care trece fiecare instanță de Activity de la crearea sa până la distrugere. Este definit de un set de metode callback.

Metodele callback principale ale ciclului de viață:

  • onCreate(): Este apelată la crearea inițială a Activity. Aici are loc inițializarea interfeței utilizator, legarea datelor și alte acțiuni unice.
  • onStart(): Este apelată când Activity devine vizibilă pentru utilizator, dar nu a primit încă focusul.
  • onResume(): Este apelată când Activity primește focusul și devine activă. Aici, de obicei, încep animațiile și alte acțiuni interactive.
  • onPause(): Este apelată când Activity își pierde focusul, dar este încă vizibilă (de exemplu, o fereastră de dialog semi-transparentă deasupra). Aici, trebuie oprite operațiunile care consumă resurse.
  • onStop(): Este apelată când Activity nu mai este vizibilă pentru utilizator. Aici, se salvează datele nesalvate și se eliberează resursele care nu mai sunt necesare.
  • onDestroy(): Este apelată înainte ca Activity să fie distrusă. Aici, se eliberează toate resursele rămase.
  • onRestart(): Este apelată după onStop() când Activity este afișată din nou. Urmează onStart().

Din punct de vedere grafic, ciclul de viață poate fi reprezentat astfel:

Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed

Există, de asemenea, tranziții:

  • Created -> Started (după onStart())
  • Started -> Resumed (după onResume())
  • Resumed -> Paused (când pierde focusul)
  • Paused -> Resumed (când recuperează focusul)
  • Paused -> Stopped (când este complet ascunsă)
  • Stopped -> Destroyed (când activitatea se încheie)
  • Stopped -> Restarted -> Started (după onRestart())

Este important să gestionăm corect starea Activity în aceste metode callback pentru a evita scurgerile de memorie și pentru a asigura comportamentul corect al aplicației la schimbarea configurației sau comutarea între Activity-uri. Pentru salvarea stării, se folosește onSaveInstanceState() (înainte de onStop()) și restaurarea are loc în onCreate() sau onRestoreInstanceState() (după onStart()).

Exemplu de utilizare a onSaveInstanceState():

// Salvarea stării
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("my_data", "some_value")
    super.onSaveInstanceState(outState)
}

// Restaurarea stării
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...
    if (savedInstanceState != null) {
        val myData = savedInstanceState.getString("my_data")
        // Utilizați myData
    }
}