Mobil inkişafda həyat dövrü: bu nədir, hansı mərhələlər və necə işləyir

Müəllif: IT Sectr Dərc olunub: 2026-03-02 Oxuma vaxtı: 9 dəq

Mobil tətbiqin həyat dövrü onun işə salınma, kiçildilmə, fondan qayıtma və bağlanma zamanı necə davrandığını müəyyən edir. Bu məqalədə App Lifecycle (iOS), Activity Lifecycle (Android), Fragment Lifecycle, ViewController Lifecycle və LifecycleOwner haqqında danışacağıq. Bu prosesləri başa düşmək yaddaş sızması, məlumat itkisi və tətbiqin düzgün işləməməsinin qarşısını almaq üçün kritik əhəmiyyət daşıyır. Ətraflı məlumat üçün rəsmi Android Activity Lifecycle sənədləşməsinə baxın.

Əsas məqamlar

  • Activity Lifecycle (Android) 7 metoddan ibarətdir: onCreate → onStart → onResume → onPause → onStop → onDestroy + onRestart
  • ViewController Lifecycle (iOS) ardıcıllıqla çağırılır: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
  • iOS App Lifecycle-in 5 vəziyyəti var: Not Running, Inactive, Active, Background, Suspended
  • Fragment Lifecycle Activity-ə bağlıdır, lakin öz metodları var: onAttach, onCreateView, onViewCreated
  • LifecycleOwner (Android) LifecycleObserver vasitəsilə həyat dövrü hadisələrinə abunə olmağa imkan verir

Tətbiqin həyat dövrü (App Lifecycle)

Fərdi ekranların həyat dövrünə keçməzdən əvvəl bütün tətbiqin həyat dövrünü başa düşmək vacibdir. iOS-da tətbiq beş vəziyyətdən keçir: Not Running (işə salınmayıb), Inactive (fondadır, hadisələri qəbul etmir), Active (aktiv), Background (fondadır, kod icra olunur) və Suspended (fondadır, kod dayandırılıb). Bu vəziyyətlər AppDelegate-də applicationDidFinishLaunching, applicationDidBecomeActive, applicationWillResignActive, applicationDidEnterBackground və applicationWillTerminate metodları vasitəsilə idarə olunur.

Android-də bunun ekvivalenti Application.ActivityLifecycleCallbacks interfeysi vasitəsilə izlənilən Application Lifecycle-dır. Bununla belə, Android daha çox Activity-nin — fərdi tətbiq ekranının — həyat dövrünə diqqət yetirir. Bunun səbəbi Android tətbiqinin hər biri öz dövrünə malik çoxsaylı Activity-lərdən ibarət ola bilməsidir.

Android-də müasir yanaşma lifecycle-process kitabxanasından ProcessLifecycleOwner istifadə etməkdir. O, müəyyən bir Activity-yə bağlanmadan bütün prosesin vəziyyətini izləməyə imkan verir. iOS-da tətbiq vəziyyətini izləmək üçün UISceneDelegate (iOS 13-dən) və ya AppDelegate istifadə olunur. SceneDelegate iPad-də çoxlu pəncərələri (multiwindow) idarə edir. App Lifecycle-ı başa düşmək fon sinxronizasiyası, yayım və VoIP zəngləri olan tətbiqlər hazırlayarkən IT Sectr üçün xüsusilə vacibdir.

Android-də Activity Lifecycle

Activity Android tətbiqinin əsas komponentidir, bir ekranı təmsil edir. Activity-nin istifadəçi hərəkətləri və sistem hadisələrinə (ekranın fırlanması, daxil olan zəng, yaddaşın azlığı) cavab olaraq əməliyyat sistemi tərəfindən idarə olunan aydın şəkildə müəyyən edilmiş həyat dövrü var.

Metod Təsvir Nə etməli
onCreateActivity yaradıldıqda bir dəfə çağırılırUI başlatma, findViewById, ViewModel qurulumu
onStartActivity görünən olurAnimasiyaları başlat, BroadCastReceiver qeydiyyatdan keçir
onResumeActivity giriş fokusunu alırKamera, sensorlar, animasiyaları başlat
onPauseActivity fokusunu itirir (qismən görünür)Qaralamaları yadda saxla, animasiyaları dayandır
onStopActivity görünmürResursları sərbəst burax, yeniləmələri dayandır
onDestroyActivity məhv edilirBütün istinadları təmizlə, LiveData-dan abunəni ləğv et
onRestartonStop-dan sonra onStart-dan əvvəl çağırılırYenidən başlatma

Vacib: onSaveInstanceState müvəqqəti vəziyyəti yadda saxlamaq üçün onStop-dan əvvəl çağırılır. Bərpa onCreate-də Bundle savedInstanceState və ya ViewModel-də SavedStateHandle vasitəsilə baş verir. Həyat dövrü düzgün idarə edilmədikdə, ekran fırlananda tətbiq bütün yadda saxlanılmamış məlumatları itirəcək.

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()
        // Отписка от всех подписок
    }
}

Jetpack Compose-da Activity Lifecycle

Jetpack Compose-da Activity-nin həyat dövrü dəyişməz qalır, lakin Compose əlavə alətlər təqdim edir: LifecycleOwner vasitəsilə Həyat dövründən xəbərdar kompozisiya, məhv olma zamanı avtomatik resurs təmizləmə üçün LifecycleEventEffect və DisposableEffect effektləri.

Fragment Lifecycle ətraflı

Android-də Fragment Activity-nin daxilində yaşayır və öz həyat dövrünə malikdir, bu qismən Activity ilə üst-üstə düşür, lakin yeni metodlar əlavə edir. Fragment-lər Activity-ni məhv etmədən əlavə edilə, dəyişdirilə, silinə bilər, bu da onları daha çevik, lakin daha mürəkkəb edir.

Fragment Lifecycle-in əsas metodları: onAttach — Fragment Activity-yə bağlandı (ilk çağırış); onCreate — məlumatların başlanması; onCreateView — View yaradılması; onViewCreated — View yaradıldı, UI konfiqurasiya edilə bilər; onStart — Fragment görünür; onResume — Fragment fokusda; onPause — Fragment fokusunu itirir; onStop — Fragment görünmür; onDestroyView — View məhv edilir; onDestroy — Fragment məhv edilir; onDetach — Fragment Activity-dən ayrılır.

Activity-dən əsas fərq: onCreateView və onDestroyView bir neçə dəfə çağırıla bilər (məsələn, TabLayout dəyişdirilərkən), onCreate isə bir dəfə çağırılır. Müvafiq olaraq, View-in başlanması onCreateView-də deyil, onViewCreated-da edilməlidir. View ilə əlaqəli resurslar (məsələn, RecyclerView adapterləri) onDestroyView-da təmizlənməlidir.

iOS-da ViewController Lifecycle

UIViewController iOS-da ekranları idarə etmək üçün əsas sinifdir. Onun həyat dövrü UIKit-in avtomatik çağırdığı metodlar ardıcıllığından ibarətdir. Bu dövrü başa düşmək düzgün UI başlanması, məlumat idarəetməsi və yaddaş idarəsi üçün kritik əhəmiyyət daşıyır.

Metod Nə vaxt çağırılır Adi istifadə
loadViewView Controller öz View iyerarxiyasını yüklədikdəStoryboard olmadan xüsusi başlatma
viewDidLoadView yaddaşa yükləndikdən sonra (bir dəfə)UI qurulumu, ilkin məlumatların yüklənməsi
viewWillAppearView ekranda görünməzdən əvvəlMəlumatları yenilə, bildirişlərə abunə ol
viewDidAppearView ekranda göründükdən sonraAnimasiyaları başlat, izləmə animasiyalarını başlat
viewWillDisappearView ekrandan yox olmazdan əvvəlVəziyyəti yadda saxla, bildiriş abunəliyini ləğv et
viewDidDisappearView ekrandan yox olduqdan sonraAnimasiyaları dayandır, resursları sərbəst burax
deallocView Controller məhv edildikdəBütün resursları sərbəst burax

Vacib: viewDidLoad View Controller-in ömrü boyu yalnız bir dəfə çağırılır. Hər görünmədə məlumatları yeniləmək üçün viewWillAppear-dan istifadə edin. Əgər viewWillAppear-da NotificationCenter-ə abunə olursunuzsa, yaddaş sızmasının qarşısını almaq üçün viewDidDisappear-da abunəliyi ləğv etdiyinizə əmin olun.

SwiftUI Lifecycle

SwiftUI View strukturları vasitəsilə View-lərin həyat dövrünü idarə edir. Geri çağırış metodları əvəzinə SwiftUI onAppear və onDisappear modifier-lərindən istifadə edir. Qlobal tətbiq vəziyyətləri üçün App və Scene protokolları vasitəsilə App Lifecycle istifadə olunur. SwiftUI vəziyyətə əsasən View-lərin yaradılmasını və məhv edilməsini avtomatik idarə edir, bu da inkişafı sadələşdirir, lakin View-in kimliyi və ömrünü başa düşməyi tələb edir.

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

Android-də LifecycleOwner və LifecycleObserver

LifecycleOwner Android Architecture Components-dan bir interfeysdir ki, həyat dövrü olan bir obyekti (Activity, Fragment) qeyd edir. LifecycleObserver bir obyektin LifecycleOwner hadisələrinə abunə olmasına imkan verən interfeysdir. Birlikdə onlar müasir Android inkişafında reaktiv həyat dövrü idarəetməsinin əsasını təşkil edirlər.

onStart/onStop-da açıq şəkildə metodları çağırmaq əvəzinə, DefaultLifecycleObserver-dan (köhnəlmiş LifecycleObserver və @OnLifecycleEvent annotasiyalarının əvəzi) istifadə etmək tövsiyə olunur. Bu, Activity və ya Fragment-ə birbaşa istinadları olmadan həyat dövrünə reaksiya verməli olan ViewModel və digər komponentlər üçün Google tərəfindən təbliğ edilən yanaşmadır.

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

IT Sectr-da biz bütün Android layihələrində LifecycleOwner istifadə edirik. ViewModel viewModelScope və lifecycleScope vasitəsilə Activity-nin LifecycleOwner-ına abunə olur və Activity məhv edildikdə korutinlərin avtomatik ləğv edilməsini təmin edir. Bu, yaddaş sızmalarının qarşısını alır və kodu daha təmiz və təhlükəsiz edir.

Tez-tez verilən suallar

Android-də Activity hansı vəziyyətlərdən keçir?

Activity altı vəziyyətdən keçir: Created (onCreate), Started (onStart), Resumed (onResume), Paused (onPause), Stopped (onStop), Destroyed (onDestroy).

iOS-da ViewController Lifecycle metodları hansı ardıcıllıqla çağırılır?

Ardıcıllıq: loadView → viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear. viewDidLoad bir dəfə çağırılır.

Android-də LifecycleOwner nədir?

LifecycleOwner Activity və ya Fragment-in həyat dövrünə sahib olan Android Architecture Components komponentidir. LifecycleObserver vasitəsilə hadisələrə abunə olmağa imkan verir.

iOS-da App Lifecycle hansı vəziyyətlərə malikdir?

iOS tətbiqi beş vəziyyətdən keçir: Not Running, Inactive, Active, Background, Suspended. Keçidlər UIApplicationDelegate vasitəsilə idarə olunur.

Android-də Saved State nədir?

Saved State ekran fırlanması və ya prosesin yenidən yaradılması zamanı Activity/Fragment vəziyyətini qoruyan Android mexanizmidir. onSaveInstanceState və SavedStateHandle istifadə edir.

Xülasə

  • Android-də Activity Lifecycle (onCreate → onDestroy) — ekran vəziyyəti idarəetməsinin əsası
  • iOS ViewController Lifecycle (viewDidLoad → viewDidDisappear) — UIKit-in düzgün işləməsinin açarı
  • Fragment Lifecycle onAttach/onDetach və onCreateView/onDestroyView səbəbindən Activity-dən daha mürəkkəbdir
  • LifecycleOwner (Android) yaddaş sızması olmadan hadisələrə reaktiv abunə olmağa imkan verir
  • App Lifecycle bütün tətbiqin vəziyyətini (Active, Background, Suspended) idarə edir
  • SwiftUI ənənəvi ViewController metodları əvəzinə onAppear və onDisappear istifadə edir
  • Düzgün həyat dövrü idarəetməsi mobil tətbiqlərin tipik qəzalarının 80%-ə qədərinin qarşısını alır

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et