Mobil ishlab chiqishda hayotiy tsikl: bu nima, qanday bosqichlar va qanday ishlaydi

Muallif: IT Sectr Nashr etilgan: 2026-03-02 O'qish vaqti: 9 daq

Mobil ilovaning hayotiy tsikli uning ishga tushirish, kichraytirish, fondan qaytish va yopish paytida qanday harakat qilishini belgilaydi. Ushbu maqolada biz App Lifecycle (iOS), Activity Lifecycle (Android), Fragment Lifecycle, ViewController Lifecycle va LifecycleOwner haqida gaplashamiz. Bu jarayonlarni tushunish xotira oqishi, ma'lumot yo'qotilishi va ilovaning noto'g'ri ishlashining oldini olish uchun juda muhimdir. Batafsil ma'lumot uchun rasmiy Android Activity Lifecycle hujjatlariga qarang.

Asosiy fikrlar

  • Activity Lifecycle (Android) 7 metodni o'z ichiga oladi: onCreate → onStart → onResume → onPause → onStop → onDestroy + onRestart
  • ViewController Lifecycle (iOS) tartibda chaqiriladi: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
  • iOS App Lifecycle 5 holatga ega: Not Running, Inactive, Active, Background, Suspended
  • Fragment Lifecycle Activity ga bog'langan, lekin o'z metodlariga ega: onAttach, onCreateView, onViewCreated
  • LifecycleOwner (Android) LifecycleObserver orqali hayotiy tsikl hodisalariga obuna bo'lish imkonini beradi

Ilovaning hayotiy tsikli (App Lifecycle)

Alohida ekranlarning hayotiy tsikliga o'tishdan oldin, butun ilovaning hayotiy tsiklini tushunish muhimdir. iOS da ilova besh holatdan o'tadi: Not Running (ishga tushirilmagan), Inactive (fondada, hodisalarni qabul qilmaydi), Active (faol), Background (fondada, kod bajarilmoqda) va Suspended (fondada, kod to'xtatilgan). Bu holatlar AppDelegate da applicationDidFinishLaunching, applicationDidBecomeActive, applicationWillResignActive, applicationDidEnterBackground va applicationWillTerminate metodlari orqali boshqariladi.

Android da uning ekvivalenti Application.ActivityLifecycleCallbacks interfeysi orqali kuzatiladigan Application Lifecycle dir. Biroq, Android ko'proq Activity — alohida ilova ekranining hayotiy tsikliga e'tibor qaratadi. Buning sababi Android ilovasi har biri o'z tsikliga ega bo'lgan bir nechta Activity lardan iborat bo'lishi mumkin.

Android da zamonaviy yondashuv lifecycle-process kutubxonasidan ProcessLifecycleOwner ni ishlatishdir. U ma'lum bir Activity ga bog'lanmagan holda butun jarayonning holatini kuzatish imkonini beradi. iOS da ilova holatini kuzatish uchun UISceneDelegate (iOS 13 dan) yoki AppDelegate ishlatiladi. SceneDelegate iPad da bir nechta oynalarni (multiwindow) boshqaradi. App Lifecycle ni tushunish fon sinxronizatsiyasi, striming va VoIP qo'ng'iroqlari bo'lgan ilovalarni ishlab chiqishda IT Sectr uchun ayniqsa muhimdir.

Android da Activity Lifecycle

Activity Android ilovasining asosiy komponenti bo'lib, bitta ekranni ifodalaydi. Activity foydalanuvchi harakatlari va tizim hodisalariga (ekran aylanishi, kiruvchi qo'ng'iroq, xotira yetishmasligi) javoban operatsion tizim tomonidan boshqariladigan aniq belgilangan hayotiy tsiklga ega.

MetodTavsifNima qilish kerak
onCreateActivity yaratilganda bir marta chaqiriladiUI ni boshlash, findViewById, ViewModel sozlash
onStartActivity ko'rinadigan bo'ladiAnimatsiyalarni boshlash, BroadCastReceiver ro'yxatdan o'tkazish
onResumeActivity kirish fokusini oladiKamera, sensorlar, animatsiyalarni boshlash
onPauseActivity fokusni yo'qotadi (qisman ko'rinadi)Qoralamalarni saqlash, animatsiyalarni to'xtatish
onStopActivity ko'rinmaydiResurslarni bo'shatish, yangilanishlarni to'xtatish
onDestroyActivity yo'q qilinadiBarcha havolalarni tozalash, LiveData dan obunani bekor qilish
onRestartonStop dan keyin onStart dan oldin chaqiriladiQayta boshlash

Muhim: onSaveInstanceState vaqtinchalik holatni saqlash uchun onStop dan oldin chaqiriladi. Tiklash onCreate da Bundle savedInstanceState yoki ViewModel dagi SavedStateHandle orqali amalga oshiriladi. Hayotiy tsikl to'g'ri boshqarilmasa, ekran aylantirilganda ilova barcha saqlanmagan ma'lumotlarni yo'qotadi.

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 ning hayotiy tsikli o'zgarishsiz qoladi, ammo Compose qo'shimcha vositalarni taqdim etadi: LifecycleOwner orqali Hayotiy tsikldan xabardor kompozitsiya, yo'q qilishda avtomatik resurs tozalash uchun LifecycleEventEffect va DisposableEffect effektlari.

Fragment Lifecycle batafsil

Android da Fragment Activity ichida yashaydi va o'z hayotiy tsikliga ega, bu qisman Activity bilan mos keladi, lekin yangi metodlarni qo'shadi. Fragment lar Activity ni yo'q qilmasdan qo'shilishi, almashtirilishi, olib tashlanishi mumkin, bu ularni yanada moslashuvchan, lekin murakkabroq qiladi.

Fragment Lifecycle ning asosiy metodlari: onAttach — Fragment Activity ga biriktirildi (birinchi chaqiruv); onCreate — ma'lumotlarni boshlash; onCreateView — View yaratish; onViewCreated — View yaratildi, UI sozlanishi mumkin; onStart — Fragment ko'rinadi; onResume — Fragment fokusda; onPause — Fragment fokusni yo'qotadi; onStop — Fragment ko'rinmaydi; onDestroyView — View yo'q qilinadi; onDestroy — Fragment yo'q qilinadi; onDetach — Fragment Activity dan ajratiladi.

Activity dan asosiy farq: onCreateView va onDestroyView bir necha marta chaqirilishi mumkin (masalan, TabLayout almashtirilganda), onCreate esa bir marta chaqiriladi. Shunga ko'ra, View ni boshlash onViewCreated da amalga oshirilishi kerak, onCreateView da emas. View bilan bog'liq resurslar (masalan, RecyclerView adapterlari) onDestroyView da tozalanishi kerak.

iOS da ViewController Lifecycle

UIViewController iOS da ekranlarni boshqarish uchun asosiy sinfdir. Uning hayotiy tsikli UIKit avtomatik ravishda chaqiradigan metodlar ketma-ketligidan iborat. Bu tsiklni tushunish to'g'ri UI boshlash, ma'lumotlarni boshqarish va xotirani boshqarish uchun juda muhimdir.

MetodQachon chaqiriladiOdatdagi foydalanish
loadViewView Controller o'z View ierarxiyasini yuklagandaStoryboardsiz maxsus boshlash
viewDidLoadView xotiraga yuklangandan keyin (bir marta)UI sozlash, dastlabki ma'lumotlarni yuklash
viewWillAppearView ekranda paydo bo'lishidan oldinMa'lumotlarni yangilash, bildirishnomalarga obuna bo'lish
viewDidAppearView ekranda paydo bo'lganidan keyinAnimatsiyalarni boshlash, kuzatuv animatsiyalarini boshlash
viewWillDisappearView ekrandan yo'qolishidan oldinHolatni saqlash, bildirishnoma obunasini bekor qilish
viewDidDisappearView ekrandan yo'qolganidan keyinAnimatsiyalarni to'xtatish, resurslarni bo'shatish
deallocView Controller yo'q qilingandaBarcha resurslarni bo'shatish

Muhim: viewDidLoad View Controllerning hayoti davomida faqat bir marta chaqiriladi. Har bir paydo bo'lishda ma'lumotlarni yangilash uchun viewWillAppear dan foydalaning. Agar viewWillAppear da NotificationCenter ga obuna bo'lsangiz, xotira oqishining oldini olish uchun viewDidDisappear da obunani bekor qilganingizga ishonch hosil qiling.

SwiftUI Lifecycle

SwiftUI View tuzilmalari orqali View larning hayotiy tsiklini boshqaradi. Qayta chaqiruv metodlari o'rniga SwiftUI onAppear va onDisappear modifikatorlaridan foydalanadi. Global ilova holatlari uchun App va Scene protokollari orqali App Lifecycle ishlatiladi. SwiftUI holatga asoslangan holda View larning yaratilishi va yo'q qilinishini avtomatik boshqaradi, bu rivojlanishni soddalashtiradi, ammo View identifikatori va umrini tushunishni talab qiladi.

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

Android da LifecycleOwner va LifecycleObserver

LifecycleOwner Android Architecture Components dan olingan interfeys bo'lib, hayotiy tsikliga ega ob'ektni (Activity, Fragment) belgilaydi. LifecycleObserver ob'ektga LifecycleOwner hodisalariga obuna bo'lish imkonini beradigan interfeysdir. Ular birgalikda zamonaviy Android rivojlanishida reaktiv hayotiy tsikl boshqaruvining asosini tashkil qiladi.

onStart/onStop da metodlarni aniq chaqirish o'rniga, DefaultLifecycleObserver (eskirgan LifecycleObserver va @OnLifecycleEvent annotatsiyalarining o'rnini bosuvchi) dan foydalanish tavsiya etiladi. Bu Activity yoki Fragment ga to'g'ridan-to'g'ri havolalarsiz hayotiy tsikliga reaksiya ko'rsatishi kerak bo'lgan ViewModel va boshqa komponentlar uchun Google tomonidan ilgari surilgan yondashuvdir.

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

IT Sectr da biz barcha Android loyihalarida LifecycleOwner dan foydalanamiz. ViewModel viewModelScope va lifecycleScope orqali Activity ning LifecycleOwner iga obuna bo'ladi va Activity yo'q qilinganda korutinlarning avtomatik bekor qilinishini kafolatlaydi. Bu xotira oqishining oldini oladi va kodni toza va xavfsizroq qiladi.

Tez-tez so'raladigan savollar

Android da Activity qanday holatlardan o'tadi?

Activity olti holatdan o'tadi: Created (onCreate), Started (onStart), Resumed (onResume), Paused (onPause), Stopped (onStop), Destroyed (onDestroy).

iOS da ViewController Lifecycle metodlari qanday tartibda chaqiriladi?

Tartib: loadView → viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear. viewDidLoad bir marta chaqiriladi.

Android da LifecycleOwner nima?

LifecycleOwner Activity yoki Fragment ning hayotiy tsikliga ega bo'lgan Android Architecture Components komponentidir. LifecycleObserver orqali hodisalarga obuna bo'lish imkonini beradi.

iOS da App Lifecycle qanday holatlarga ega?

iOS ilovasi besh holatdan o'tadi: Not Running, Inactive, Active, Background, Suspended. O'tishlar UIApplicationDelegate orqali boshqariladi.

Android da Saved State nima?

Saved State ekran aylanishi yoki jarayonni qayta yaratishda Activity/Fragment holatini saqlaydigan Android mexanizmidir. onSaveInstanceState va SavedStateHandle dan foydalanadi.

Xulosa

  • Android da Activity Lifecycle (onCreate → onDestroy) — ekran holatini boshqarish asosi
  • iOS ViewController Lifecycle (viewDidLoad → viewDidDisappear) — UIKit ning to'g'ri ishlash kaliti
  • Fragment Lifecycle onAttach/onDetach va onCreateView/onDestroyView sababli Activity dan murakkabroq
  • LifecycleOwner (Android) xotira oqishisiz hodisalarga reaktiv obuna bo'lish imkonini beradi
  • App Lifecycle butun ilova holatini (Active, Background, Suspended) boshqaradi
  • SwiftUI an'anaviy ViewController metodlari o'rniga onAppear va onDisappear dan foydalanadi
  • To'g'ri hayotiy tsikl boshqaruvi mobil ilovalardagi odatiy nosozliklarning 80% gacha oldini oladi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish