Életciklus a mobilfejlesztésben: mi ez, milyen szakaszok és hogyan működik

Szerző: IT Sectr Megjelenés: 2026-03-02 Olvasási idő: 9 perc

A mobilalkalmazás életciklusa meghatározza, hogyan viselkedik az alkalmazás indításkor, minimalizáláskor, háttérből való visszatéréskor és bezáráskor. Ebben a cikkben áttekintjük az App Lifecycle (iOS), Activity Lifecycle (Android), Fragment Lifecycle, ViewController Lifecycle és LifecycleOwner fogalmakat. Ezen folyamatok megértése kritikus fontosságú a memóriaszivárgások, adatvesztés és az alkalmazás helytelen működésének megelőzéséhez. További részletek a hivatalos Android Activity Lifecycle dokumentációban.

Főbb pontok

  • Activity Lifecycle (Android) 7 metódust tartalmaz: onCreate → onStart → onResume → onPause → onStop → onDestroy + onRestart
  • ViewController Lifecycle (iOS) sorrendben hívódik: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
  • iOS App Lifecycle 5 állapottal rendelkezik: Not Running, Inactive, Active, Background, Suspended
  • Fragment Lifecycle az Activity-hez kapcsolódik, de saját metódusokkal rendelkezik: onAttach, onCreateView, onViewCreated
  • LifecycleOwner (Android) lehetővé teszi az életciklus-eseményekre való feliratkozást a LifecycleObserver segítségével

Az alkalmazás életciklusa (App Lifecycle)

Mielőtt belemennénk az egyes képernyők életciklusába, fontos megérteni a teljes alkalmazás életciklusát. iOS-ben az alkalmazás öt állapoton megy keresztül: Not Running (nem fut), Inactive (háttérben, nem fogad eseményeket), Active (aktív), Background (háttérben, kód fut) és Suspended (háttérben, kód felfüggesztve). Ezeket az állapotokat az AppDelegate kezeli az applicationDidFinishLaunching, applicationDidBecomeActive, applicationWillResignActive, applicationDidEnterBackground és applicationWillTerminate metódusokon keresztül.

Androidban az megfelelője az Application Lifecycle, amely az Application.ActivityLifecycleCallbacks interfészen keresztül követhető. Az Android azonban jobban összpontosít egy Activity — egy egyedi alkalmazásképernyő — életciklusára. Ez azért van, mert egy Android-alkalmazás több Activity-ből állhat, mindegyik saját ciklussal.

A modern megközelítés Androidban a ProcessLifecycleOwner használata a lifecycle-process könyvtárból. Lehetővé teszi a teljes folyamat állapotának nyomon követését anélkül, hogy egy adott Activity-hez lenne kötve. iOS-ben az alkalmazás állapotának nyomon követésére a UISceneDelegate (iOS 13-tól) vagy az AppDelegate szolgál. A SceneDelegate több ablakot (multiwindow) kezel iPad-en. Az App Lifecycle megértése különösen fontos az IT Sectr számára háttérszinkronizálással, streameléssel és VoIP-hívásokkal rendelkező alkalmazások fejlesztésekor.

Activity Lifecycle Androidban

Activity az Android-alkalmazás alapvető összetevője, amely egy képernyőt képvisel. Az Activity-nek egyértelműen meghatározott életciklusa van, amelyet az operációs rendszer kezel a felhasználói műveletekre és rendszereseményekre (képernyő forgatása, bejövő hívás, kevés memória) válaszul.

MetódusLeírásMit tegyünk
onCreateEgyszer hívódik meg az Activity létrehozásakorUI inicializálása, findViewById, ViewModel beállítása
onStartAz Activity láthatóvá válikAnimációk indítása, BroadCastReceiver regisztrálása
onResumeAz Activity bemeneti fókuszt kapKamera, érzékelők, animációk indítása
onPauseAz Activity elveszti a fókuszt (részben látható)Piszkozatok mentése, animációk leállítása
onStopAz Activity nem láthatóErőforrások felszabadítása, frissítések leállítása
onDestroyAz Activity megsemmisülMinden hivatkozás tisztítása, leiratkozás LiveData-ról
onRestartAz onStop után az onStart előtt hívódikÚjrainicializálás

Fontos: Az onSaveInstanceState az onStop előtt hívódik az átmeneti állapot mentésére. A helyreállítás az onCreate-ben történik a Bundle savedInstanceState vagy a ViewModel-ben lévő SavedStateHandle segítségével. Az életciklus megfelelő kezelése nélkül az alkalmazás elveszíti az összes nem mentett adatot képernyő forgatásakor.

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putString("draft", draftText)
    }
    override fun onDestroy() {
        super.onDestroy()
        // Отписка от всех подписок
    }
}

Activity Lifecycle Jetpack Compose-ban

A Jetpack Compose-ban az Activity életciklusa változatlan marad, de a Compose további eszközöket kínál: Életciklus-tudatos kompozíció a LifecycleOwner segítségével, LifecycleEventEffect és DisposableEffect effektek az automatikus erőforrás-tisztításhoz megsemmisítéskor.

Fragment Lifecycle részletesen

Fragment Androidban egy Activity-n belül él, és saját életciklussal rendelkezik, amely részben átfedésben van az Activity-vel, de új metódusokat ad hozzá. A Fragment-ek hozzáadhatók, lecserélhetők, eltávolíthatók az Activity megsemmisítése nélkül, ami rugalmasabbá, de összetettebbé teszi őket.

A Fragment Lifecycle fő metódusai: onAttach — Fragment az Activity-hez csatolva (első hívás); onCreate — adatok inicializálása; onCreateView — View létrehozása; onViewCreated — View létrejött, UI konfigurálható; onStart — Fragment látható; onResume — Fragment fókuszban; onPause — Fragment elveszti a fókuszt; onStop — Fragment nem látható; onDestroyView — View megsemmisül; onDestroy — Fragment megsemmisül; onDetach — Fragment leválasztva az Activity-ről.

Fő különbség az Activity-től: Az onCreateView és onDestroyView többször is meghívható (pl. TabLayout váltásakor), míg az onCreate egyszer hívódik. Ennek megfelelően a View inicializálását az onViewCreated-ben kell végezni, nem az onCreateView-ben. A View-hoz kapcsolódó erőforrásokat (pl. RecyclerView adapterek) az onDestroyView-ben kell tisztítani.

ViewController Lifecycle iOS-ben

UIViewController az iOS-ben a képernyők kezelésének alaposztálya. Életciklusa metódusok sorozatából áll, amelyeket az UIKit automatikusan meghív. Ennek a ciklusnak a megértése kritikus a helyes UI-inicializáláshoz, adatkezeléshez és memóriakezeléshez.

MetódusMikor hívódikTipikus használat
loadViewAmikor a View Controller betölti a View hierarchiájátEgyedi inicializálás storyboard nélkül
viewDidLoadMiután a View betöltődött a memóriába (egyszer)UI beállítása, kezdeti adatok betöltése
viewWillAppearMielőtt a View megjelenik a képernyőnAdatok frissítése, feliratkozás értesítésekre
viewDidAppearMiután a View megjelent a képernyőnAnimációk indítása, követési animációk indítása
viewWillDisappearMielőtt a View eltűnik a képernyőrőlÁllapot mentése, leiratkozás értesítésekről
viewDidDisappearMiután a View eltűnt a képernyőrőlAnimációk leállítása, erőforrások felszabadítása
deallocAmikor a View Controller megsemmisülMinden erőforrás felszabadítása

Fontos: A viewDidLoad csak egyszer hívódik meg a View Controller élete során. Az adatok frissítéséhez minden megjelenéskor használja a viewWillAppear-t. Ha feliratkozik a NotificationCenter-re a viewWillAppear-ben, feltétlenül iratkozzon le a viewDidDisappear-ben a memóriaszivárgás elkerülése érdekében.

SwiftUI Lifecycle

A SwiftUI a View-k életciklusát View struktúrákon keresztül kezeli. A callback metódusok helyett a SwiftUI a onAppear és onDisappear módosítókat használja. A globális alkalmazásállapotokhoz az App Lifecycle-t használja az App és Scene protokollokon keresztül. A SwiftUI automatikusan kezeli a View-k létrehozását és megsemmisítését az állapot alapján, ami egyszerűsíti a fejlesztést, de megköveteli a View identitásának és élettartamának megértését.

swift
struct ContentView: View {
    var body: some View {
        Text("Hello")
            .onAppear {
                print("View появилась")
            }
            .onDisappear {
                print("View исчезла")
            }
    }
}

LifecycleOwner és LifecycleObserver Androidban

LifecycleOwner egy interfész az Android Architecture Components-ből, amely egy életciklussal rendelkező objektumot (Activity, Fragment) jelöl meg. LifecycleObserver egy interfész, amely lehetővé teszi egy objektum számára, hogy feliratkozzon a LifecycleOwner eseményeire. Együtt alkotják a reaktív életciklus-kezelés alapját a modern Android-fejlesztésben.

Ahelyett, hogy explicit módon hívnánk metódusokat az onStart/onStop-ban, ajánlott a DefaultLifecycleObserver használata (az elavult LifecycleObserver helyett @OnLifecycleEvent annotációkkal). Ezt a megközelítést a Google támogatja a ViewModel és más összetevők számára, amelyeknek az életciklusra kell reagálniuk anélkül, hogy közvetlen hivatkozásaik lennének az Activity-re vagy Fragment-re.

kotlin
class MyObserver : DefaultLifecycleObserver {
    override fun onStart(owner: LifecycleOwner) {
        // Подписка на обновления
    }
    override fun onStop(owner: LifecycleOwner) {
        // Отписка
    }
}

Az IT Sectr-nél a LifecycleOwner-t használjuk minden Android-projektben. A ViewModel a viewModelScope és lifecycleScope segítségével iratkozik fel az Activity LifecycleOwner-jére, garantálva a korutinok automatikus törlését az Activity megsemmisülésekor. Ez megakadályozza a memóriaszivárgásokat és tisztábbá, biztonságosabbá teszi a kódot.

Gyakran Ismételt Kérdések

Milyen állapotokon megy keresztül egy Activity Androidban?

Az Activity hat állapoton megy keresztül: Created (onCreate), Started (onStart), Resumed (onResume), Paused (onPause), Stopped (onStop), Destroyed (onDestroy).

Milyen sorrendben hívódnak a ViewController Lifecycle metódusok iOS-ben?

Sorrend: loadView → viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear. A viewDidLoad egyszer hívódik.

Mi a LifecycleOwner Androidban?

LifecycleOwner egy Android Architecture Components összetevő, amely egy Activity vagy Fragment életciklusának tulajdonosa. Lehetővé teszi az eseményekre való feliratkozást a LifecycleObserver segítségével.

Milyen állapotai vannak az App Lifecycle-nek iOS-ben?

Az iOS-alkalmazás öt állapoton megy keresztül: Not Running, Inactive, Active, Background, Suspended. Az átmeneteket a UIApplicationDelegate kezeli.

Mi a Saved State Androidban?

Saved State az Android mechanizmusa az Activity/Fragment állapotának megőrzésére képernyő forgatásakor vagy folyamat újraépítésekor. Az onSaveInstanceState-t és SavedStateHandle-t használja.

Összefoglaló

  • Activity Lifecycle Androidban (onCreate → onDestroy) — a képernyőállapot-kezelés alapja
  • iOS ViewController Lifecycle (viewDidLoad → viewDidDisappear) — az UIKit helyes működésének kulcsa
  • Fragment Lifecycle összetettebb, mint az Activity az onAttach/onDetach és onCreateView/onDestroyView miatt
  • LifecycleOwner (Android) lehetővé teszi a reaktív feliratkozást eseményekre memóriaszivárgás nélkül
  • App Lifecycle a teljes alkalmazás állapotát kezeli (Active, Background, Suspended)
  • A SwiftUI a onAppear és onDisappear függvényeket használja a hagyományos ViewController metódusok helyett
  • A megfelelő életciklus-kezelés megakadályozza a mobilalkalmazások tipikus összeomlásainak akár 80%-át

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése