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ă aActivity. Aici are loc inițializarea interfeței utilizator, legarea datelor și alte acțiuni unice.onStart(): Este apelată cândActivitydevine vizibilă pentru utilizator, dar nu a primit încă focusul.onResume(): Este apelată cândActivityprimește focusul și devine activă. Aici, de obicei, încep animațiile și alte acțiuni interactive.onPause(): Este apelată cândActivityîș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ândActivitynu mai este vizibilă pentru utilizator. Aici, se salvează datele nesalvate și se eliberează resursele care nu mai sunt necesare.onDestroy(): Este apelată înainte caActivitysă fie distrusă. Aici, se eliberează toate resursele rămase.onRestart(): Este apelată dupăonStop()cândActivityeste 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
}
}