Mit tudsz mondani az Android Activity életciklusáról?
sobes.tech MI
Válasz az MI-től
Az Activity életciklusa egy állapotokból és azok közötti átmenetekből áll, amelyeken minden Activity példány keresztülmegy a létrehozástól a megsemmisítésig. Ezt callback metódusok halmaza határozza meg.
Az életciklus fő callback metódusai:
onCreate(): Hívás azActivityelső létrehozásakor. Itt történik a felhasználói felület inicializálása, adatok kötése és más egyszeri műveletek.onStart(): Hívás, amikor azActivityláthatóvá válik a felhasználó számára, de még nem kapott fókuszt.onResume(): Hívás, amikor azActivityfókuszt kap és aktívvá válik. Itt általában animációk és más interaktív műveletek kezdődnek.onPause(): Hívás, amikor azActivityfókuszt veszít, de még látható (pl. egy félig átlátszó párbeszédablak van felette). Itt le kell állítani az erőforrás-igényes műveleteket.onStop(): Hívás, amikor azActivitymár nem látható a felhasználó számára. Itt mentjük a nem mentett adatokat és felszabadítjuk a már nem szükséges erőforrásokat.onDestroy(): Hívás, mielőtt azActivitymegsemmisülne. Itt minden fennmaradó erőforrást felszabadítunk.onRestart(): Hívás azonStop()után, amikor azActivityújra megjelenik. Ezt követi azonStart().
Grafikusan az életciklus így ábrázolható:
Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed
Vannak átmenetek is:
- Created -> Started (
onStart()után) - Started -> Resumed (
onResume()után) - Resumed -> Paused (amikor elveszíti a fókuszt)
- Paused -> Resumed (amikor visszakapja a fókuszt)
- Paused -> Stopped (amikor teljesen elrejtőzik)
- Stopped -> Destroyed (az aktivitás befejezésekor)
- Stopped -> Restarted -> Started (
onRestart()után)
Fontos, hogy ezeket a callback metódusokat helyesen kezeljük az Activity állapotának megfelelő kezeléséhez, hogy elkerüljük a memória szivárgásokat és biztosítsuk az alkalmazás helyes működését konfigurációváltozás vagy Activity közötti váltás esetén. Az állapot mentéséhez az onSaveInstanceState() metódust használjuk (az onStop() előtt), és a helyreállítás az onCreate() vagy az onRestoreInstanceState() során történik (az onStart() után).
Példa az onSaveInstanceState() használatára:
// Állapot mentése
override fun onSaveInstanceState(outState: Bundle) {
outState.putString("my_data", "some_value")
super.onSaveInstanceState(outState)
}
// Állapot helyreállítása
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
if (savedInstanceState != null) {
val myData = savedInstanceState.getString("my_data")
// MyData használata
}
}