Sobes.tech
Junior

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 az Activity első 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 az Activity láthatóvá válik a felhasználó számára, de még nem kapott fókuszt.
  • onResume(): Hívás, amikor az Activity fó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 az Activity fó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 az Activity má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 az Activity megsemmisülne. Itt minden fennmaradó erőforrást felszabadítunk.
  • onRestart(): Hívás az onStop() után, amikor az Activity újra megjelenik. Ezt követi az onStart().

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