Activity Lifecycle: nədir, onCreate onStart onResume Android-də

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

Activity Lifecycle, Android tərəfindən Activity-nin vəziyyətlər arasında keçidi zamanı çağırılan geri çağırma metodları toplusudur: yaradılma, görünmə, fokus, qismən görünmə itkisi, tam gizlənmə və məhvetmə. Sistem hər proqram ekranının həyat dövrünü onCreate() çağırışından başlayaraq onDestroy()-yə qədər idarə edir. Bu vəziyyətləri başa düşmək stabil Android proqramı üçün məcburi tələbdir, çünki metodlar arasında keçidin səhv idarə edilməsi yaddaş sızıntılarına, istifadəçi məlumatlarının itkisinə və gözlənilməz çöküşlərə səbəb olur. Android arxitekturası haqqında daha ətraflı Android haqqında ümumi məqalədə oxuyun.

Əsas olanlar

  • Activity Lifecycle — ciddi müəyyən edilmiş metod ardıcıllığı: onCreate, onStart, onResume, onPause, onStop, onDestroy
  • onCreate — yeganə məcburi metod, Activity yaradılarkən bir dəfə çağırılır; burada UI və məlumatların başlanğıc qurulması aparılır
  • onResume — Activity ön plandadır və istifadəçi ilə qarşılıqlı əlaqədədir; bu ekranın işçi vəziyyətidir
  • onPause / onStop — fon rejiminə keçid zamanı Activity əvvəlcə dayandırılır, sonra saxlanılır; onPause-da kritik məlumatlar yaddaşa yazılır
  • onSaveInstanceState — ekranın fİrlanması və Activity-nin sistem tərəfindən yenidən yaradılması zamanı UI vəziyyətinin qorunma mexanizmi
  • Fragment həyat dövri — Activity-yə bənzəyir, lakin onAttach, onCreateView, onViewCreated, onDestroyView metodları ilə əlavə edilmişdir
  • LifecycleObserver — Activity-də metodları yenidən təyin etmədən vəziyyəti reaktiv izləmək üçün Jetpack komponenti

Activity Lifecycle nədir

Activity Lifecycle (Activity həyat dövri) — Android proqramının hər ekranının yaradılma anından tam məhvinə qədər keçdiyi vəziyyət avtomatıdır. Android sistemi bu prosesi istifadəçi hərəkətləri əsasında idarə edir: proqramı açma, kiçültmə, ekranı fİrlama, daxil olan zəngə cavab vermə, proqramlar arasında keçid etmə və işi bitirmə.

Həyat dövrünü başa düşmək hər bir Android tərtibatçısı üçün zəruridir, çünki sistem yaddaş çatışmazlığı zamanı istənilən anda Activity-ni məhv edə bilər — və proqram öz vəziyyətini düzgün bərpa etməlidir. Google Android Vitals (2025) məlumatlarına görə, onSaveInstanceState()-də vəziyyət qorunmasını idarə etməyən proqramlar Activity yenidən yaradılarkən 42% daha çox çöküş göstərir.

Həyat dövri altı əsas geri çağırma metodunu əhatə edir: onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(). Əlavə olaraq onRestart() metodu var, o, onStart()-dan əvvəl, Activity dayandırılmış vəziyyətdən qayıtdıqda çağırılır. Hər metodun ciddi müəyyən edilmiş təyinatı və icra müddəti var — sistem onları ardıcıl çağırır, tərtibatçı isə öz məntiqini yerinə yetirmək üçün onlardan hər hansını yenidən təyin edə bilər.

Dövrü üç əsas mərhələyə bölmək olar: bütün ömür müddəti (onCreate → onDestroy), görünən ömür müddəti (onStart → onStop) və ön planda ömür müddəti (onResume → onPause). Bu üç səviyyəni başa düşmək başlanğıc qurma və resursların azad edilməsi kodunu düzgün bölməyə kömək edir.

Activity həyat dövri metodları

Həyat dövrinin hər metodu ciddi müəyyən edilmiş tapşırığı yerinə yetirir. Sistem onları sabit ardıcıllıqla çağırır, tərtibatçı isə yalnız konkret məntiq üçün lazım olan metodları yenidən təyin etməlidir. Həyat dövri metodlarının birbaşa çağırılması tövsiyə edilmir — bununla Android Runtime məşğul olur.

Çağırışların ümumi sxemi

Proqramı işə salarkən tipik ardıcıllıq: onCreate → onStart → onResume. “Geri” düyməsini basdıqda: onPause → onStop → onDestroy. Kiçültdükdə: onPause → onStop, sonra qayıdarkən: onRestart → onStart → onResume.

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onStart() {
        super.onStart()
    }

    override fun onResume() {
        super.onResume()
    }

    override fun onPause() {
        super.onPause()
    }

    override fun onStop() {
        super.onStop()
    }

    override fun onDestroy() {
        super.onDestroy()
    }

    override fun onRestart() {
        super.onRestart()
    }
}

Hər yenidən təyin edilmiş metod super-versiyasını çağırmalıdır — bu olmadan sistem vəziyyətlər arasında keçidi düzgün başa çatdıra bilməyəcək. Bu qayda Android Developers sənədləşdirilməsində qeyd edilmişdir və Android Studio-nun lint qaydaları ilə yoxlanılır.

Həyat dövrinin üç səviyyəsi

Birinci səviyyə — bütün ömür müddəti (entire lifetime): onCreate ilə onDestroy arasındakı dövr. Burada birdəfəlik başlanğıc qurma və qlobal resursların son azad edilməsi həyata keçirilir. İkinci səviyyə — görünən ömür müddəti (visible lifetime): onStart ilə onStop arasında. Activity ekranda görünür, lakin qismən başqa pəncərə ilə örtülə bilər. Üçüncü səviyyə — ön planda ömür müddəti (foreground lifetime): onResume ilə onPause arasında. Activity tapşırıq yığınının ən yuxarısındadır və istifadəçi ilə qarşılıqlı əlaqədədir.

onCreate — Activity-nin yaradılması

onCreate() — Activity həyat dövrinin ilk və yeganə məcburi metodu. Sistem tərəfindən Activity nümunəsi yaradılarkən bir dəfə çağırılır. Bu metod savedInstanceState: Bundle? parametrini qəbul edir, o, əgər Activity məhvdən sonra yenidən yaradılırsa — məsələn, ekran fİrlanarkən — əvvəlcə yaddaşa yazılmış vəziyyəti ehtiva edir.

onCreate daxilində aşağıdakı tapşırıqlar yerinə yetirilir: setContentView() vasitəsilə istifadəçi interfeysinin başlanğıc qurulması, findViewById() ilə View elementlərinin bağlanması, RecyclerView və ViewPager üçün adapterlərin konfiqurasiyası, savedInstanceState-dən vəziyyətin bərpası, ViewModel və LiveData-nın başlanğıc qurulması, klik və jest dinləyicilərinin qurulması. Metod mümkün qədər tez bitməlidir — uzun müddətli əməliyyatlar ilk kadrın render edilməsini bloklayır, bu da proqramın işə düşmə vaxtını artırır.

kotlin
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_profile)

    val userNameText: TextView = findViewById(R.id.user_name)
    val loadButton: Button = findViewById(R.id.load_button)

    if (savedInstanceState != null) {
        userNameText.text = savedInstanceState.getString("user_name")
    }

    loadButton.setOnClickListener {
        loadUserProfile()
    }
}

Əgər Activity ilk dəfə yaradılırsa, savedInstanceState null bərabərdir. Ekran fİrlanmasından sonra yenidən yaradılarkən Bundle onSaveInstanceState()-də yaddaşa yazılmış məlumatları ehtiva edir. Null yoxlaması — istifadəçi tərəfindən daxil edilmiş məlumatları itirmədən UI-nı düzgün bərpa etmək üçün standart təcrübədir.

onStart — ekranda görünmə

onStart() onCreate()-dan dərhal sonra və ya onRestart()-dan sonra, Activity istifadəçi üçün görünən olduqda çağırılır. Bu vəziyyətdə Activity hələ ön planda deyil və istifadəçi ilə qarşılıqlı əlaqədə ola bilməz, lakin onun istifadəçi interfeysi artıq ekranda görünür. Məsələn, proqramı işə salarkən onStart və onResume çağırışı arasında sistem interfeysin ilk kadrını render edir.

onStart metodunda adətən aşağıdakı hərəkətlər yerinə yetirilir: Activity görünərkən işləməli olan animasiyaların başladılması; BroadcastReceiver qeydiyyatı; geolokasiya xidmətlərinə və sensorlara qoşulma; ViewModel və ya Room-dan məlumatların yenilənməsi. Burada həmçinin proqram proses daxilində müştəri-server arxitekturasından istifadə edərsə, bindService() vasitəsilə Bound-xidmətlərinə qoşulma həyata keçirilir.

kotlin
override fun onStart() {
    super.onStart()
    val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
    locationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER,
        5000L,
        10f,
        locationListener
    )
}

override fun onStop() {
    super.onStop()
    val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
    locationManager.removeUpdates(locationListener)
}

Əhəmiyyətli qayda: onStart-da qoşulmuş resurslar onStop-da azad edilməlidir. Bu, Activity ekranda görünmədikdə batareya və sistem resurslarını istehlak etməməsini təmin edir. Google Play Store yeniləmələrin moderasiyası zamanı proqramları LocationListener və digər sistem xidmətlərinin sızıntılarına görə yoxlayır.

onResume — fokusun əldə edilməsi

onResume() — Activity-nin ön planda olduğu və istifadəçi ilə qarşılıqlı əlaqəyə hazır olduğu vəziyyətdir. Bu ekranın işçi vəziyyətidir: sistem Activity-yə daxiletmə fokusunu ötürür və bütün toxunma, klaviatura daxiletmə və jest hadisələri bu ekrana yönləndirilir. onResume metodu hər dəfə Activity ön plana qayıtdıqda çağırılır — başqa Activity bitdikdən sonra, dialoq pəncərəsi bağlandıqdan sonra, cihazın kilidi açıldıqdan sonra.

onResume-da yerinə yetirilir: onPause-da dayandırılmış animasiyaların bərpası; kamera və digər eksklüziv resursların açılması; sensor dinləyicilərinin qeydiyyatı (akselerometr, giroskop); UI üçün taymerlərin və saniyəölçənin başadılması; ekran məzmununun aktuallaşdırılması. onResume / onPause cütlüyündə yalnız fokus zamanı aktiv olmalı olan resurslarla işlənir — məsələn, davamlı nitq tanıma və ya video çəkiş.

kotlin
override fun onResume() {
    super.onResume()
    cameraHolder.openCamera()
    animator.resume()
    sensorManager.registerListener(
        stepCounter,
        sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER),
        SensorManager.SENSOR_DELAY_NORMAL
    )
}

override fun onPause() {
    super.onPause()
    cameraHolder.closeCamera()
    animator.pause()
    sensorManager.unregisterListener(stepCounter)
}

onStart və onResume arasındakı fərq əhəmiyyətlidir: Activity görünə bilər (onStart), lakin aktiv olmaya bilər (onResume) — məsələn, onun üzərində açılan dialoq pəncərəsi və ya şəffaf kilid ekranı olduqda. Məhz onResume-da, onStart-da yox, monopol giriş tələb edən eksklüziv resurslar açılmalıdır.

onPause — fokusun itirilməsi

onPause() Activity daxiletmə fokusunu itirdikdə, lakin qismən görünər qaldıqda çağırılır. Tipik ssenarilər: dialoq pəncərəsinin açılması, “Son proqramlar” düyməsinin basılması, daxil olan zəng, “Ev” düyməsinin basılması (bu halda onPause-dan sonra onStop gələcək). onPause metodu — istifadəçinin itirməməli olduğu məlumatları yadda saxlamaq üçün son etibarlı yerdir.

onPause-da yerinə yetirilir: məktub və forma qaralamalarının Room və ya SharedPreferences-də yaddaşa yazılması; animasiyaların və video oxutmanın dayandırılması; kameranın bağlanması və monopol resursların azad edilməsi; fon üçün kritik olmayan bahalı əməliyyatların ləğv edilməsi. onPause metodu 100 millisaniyədən az müddətdə bitməlidir — sistem onPause idarəni qaytarmayana qədər növbəti Activity-yə keçidi bloklayır və limitin aşılması ANR-yə (Application Not Responding) səbəb olur.

kotlin
override fun onPause() {
    super.onPause()
    val editor = SharedPreferences.Manager ...
    editor.putString("draft_text", draftEditText.text.toString())
    editor.apply()
    videoView.pause()
    cameraHolder.release()
}

Əhəmiyyətlidir: onPause UI axınında icra olunur, buna görə də sinxron sorğu ilə Room vasitəsilə məlumat bazasına yazmaq kimi bloklaşdırıcı əməliyyatlar asinxronlarla (korutinlər) və ya fon axınında yerinə yetirilməlidir. SharedPreferences üçün commit() əvəzinə apply() istifadə edin — apply məlumatları asinxron yazır və UI axınını bloklamır.

onStop — ekrandan gizlənmə

onStop() Activity istifadəçi üçün görünməz olduqda çağırılır. Bu aşağıdakı hallarda baş verir: Activity tamamilə başqa Activity ilə örtülübdür; istifadəçi “Ev” düyməsini basıb və ya başqa proqrama keçib; Activity sonlanır (sonra onDestroy çağırılacaq). onStop vəziyyətində Activity yaddaşda qalır və bütün sahələrini saxlayır — o, məhv edilməyib, lakin aktiv də deyil.

onStop-da yerinə yetirilir: onStart-da qeydiyyatdan keçirilmiş BroadcastReceiver-dən çıxma; Bound-xidmətlərdən ayrılma; LocationListener, SensorListener və digər sistem dinləyicilərinin azad edilməsi; proqram gizləndikdə ehtiyac olmayan uzunmüddətli fon əməliyyatların dayandırılması; onPause-da edilməyibsə, onSaveInstanceState() vasitəsilə Bundle-də cari UI vəziyyətinin yaddaşa yazılması.

kotlin
override fun onStop() {
    super.onStop()
    unregisterReceiver(connectivityReceiver)
    unbindService(serviceConnection)
    if (isChangingConfigurations()) {
        Log.d("Lifecycle", "Activity konfiqurasiya səbəbi ilə yenidən yaradılır")
    }
}

Sistem yaddaş çatışmazlığı zamanı onDestroy çağırmadan onStop vəziyyətində Activity-ni məhv edə bilər. Buna görə bütün kritik məlumatlar onStop-a keçməzdən əvvəl yaddaşa yazılmalıdır. isChangingConfigurations() bayrağı onStop çağırışının ekranın fİrlanması ilə əlaqəli olub-olmadığını müəyyən etməyə imkan verir — bu halda Activity sonlanmayacaq, yenidən yaradılacaq.

onDestroy — Activity-nin məhvi

onDestroy() — Activity tam məhv edilməzdən əvvəl çağırılan həyat dövrinün son metodu. Sistem onDestroy-u iki halda çağırır: Activity finish() çağırılması ilə sonlanır və ya istifadəçi “Geri” düyməsini basır; Activity konfiqurasiya dəyişikliyi (məsələn, ekranın fİrlanması) səbəbindən sistem tərəfindən məhv edilir və yenidən yaradılacaq. onDestroy metodu resursların son təmizlənməsini yerinə yetirməyə imkan verir: axınların və korutinlərin ayrılması, daimi açıq kursorların və soketlərin bağlanması, NDK vasitəsilə native yaddaşın azad edilməsi.

kotlin
override fun onDestroy() {
    super.onDestroy()
    backgroundJob.cancel()
    dbHelper.close()
    if (isFinishing) {
        Log.d("Lifecycle", "Activity tamamilə başa çatır")
    } else {
        Log.d("Lifecycle", "Activity yenidən yaradılacaq")
    }
}

Əhəmiyyətli qeyd: onDestroy-un çağırılması təminat verilmir, əgər proqram prosesi sistem tərəfindən öldürülübsə (out-of-memory kill). Buna görə məlumatları yadda saxlamaq üçün onDestroy-a etibar etmək olmaz — bu tapşırıq onPause və ya onStop-da həll edilir. isFinishing xassəsi Activity-nin finish() ilə sonlanmasını konfiqurasiya dəyişikliyi zamanı yenidən yaradılmadan ayırmağa imkan verir.

onRestart — dayandırılmış vəziyyətdən qayıdış

onRestart() onStart()-dan əvvəl, Activity dayandırılmış vəziyyətdən (onStop) ön plana qayıtdıqda çağırılır. Bu, istifadəçi “Son proqramlar” menyusundan proqramı yenidən açdıqda və ya uşaq ekranında “Geri” basaraq Activity-yə qayıtdıqda baş verir. onRestart metodu onCreate-dən fərqli məntiqi yerinə yetirməyə imkan verir — məsələn, Activity gizləndikdə dəyişə biləcək məlumatları yeniləmək.

kotlin
override fun onRestart() {
    super.onRestart()
    refreshDataFromNetwork()
    Log.d("Lifecycle", "Activity yığından yenidən işə salınır")
}

Tipik ssenari: istifadəçi proqramı açdı, başqa tapşırığa keçdi və bir saat sonra qayıtdı. onRestart-da proqram məlumatların aktuallığını yoxlaya və əgər çox vaxt keçibsə, məzmunu yenidən yükləməyi təklif edə bilər. Bu, istifadəçi təcrübəsini yaxşılaşdırır və köhnəlmiş məlumatların göstərilmə ehtimalını azaldır.

Ekranın fİrlanması və vəziyyətin qorunması

Ekranın fİrlanması — Activity-nin yenidən yaradılmasının ən tez-tez rast gəlinən ssenarisidir. Defolt olaraq Android hər orientasiya dəyişikliyində cari Activity-ni məhv edir və yenisini yaradır. Vəziyyət yaddaşa yazılmasa, istifadəçi bütün daxil edilmiş məlumatları itirəcək. Bunun üçün Android iki mexanizm təmin edir: seriallaşdırıla bilən məlumatlar üçün onSaveInstanceState() və konfiqurasiya dəyişikliklərinə davam edən məlumatlar üçün ViewModel.

onSaveInstanceState və onRestoreInstanceState

onSaveInstanceState() Activity məhv edilməzdən əvvəl müvəqqəti vəziyyəti yadda saxlamaq üçün çağırılır. Yaddaşa yazılmış məlumatlar onCreate-ə savedInstanceState parametri vasitəsilə və onStart-dan sonra çağırılan onRestoreInstanceState() metoduna ötürülür. Bundle ölçü məhdudiyyətinə malikdir — təxminən 500 KB, buna görə də böyük həcmli məlumatlar (məsələn, bitmap-lar) ViewModel vasitəsilə yaddaşa yazılır.

xml
<!-- AndroidManifest.xml — oriyentasiyanın təsbiti -->
<activity android:name=".MainActivity"
    android:configChanges="orientation|screenSize" />

android:configChanges vasitəsilə orientasiyanın təsbiti Activity-nin yenidən yaradılmasının qarşısını alır, lakin proqram hər iki orientasiyanı dəstəkləməlidirsə, bu anti-nümunə hesab olunur. Google-ın müasir tövsiyəsi — istifadəçinin UI-da daxil etdiyi məlumatlar üçün onSaveInstanceState ilə birlikdə ViewModel istifadə etmək.

Fragment həyat dövri

Fragment Activity-yə bənzər öz həyat dövrinə malikdir, lakin əlavə metodlarla: onAttach, onCreate, onCreateView, onViewCreated, onStart, onResume, onPause, onStop, onDestroyView, onDestroy, onDetach. Fragment həmişə Activity daxilində mövcuddur və onun həyat dövri Activity-konteynerin həyat dövri ilɘ bağlıdır. Activity məhv edilərsə, Fragment də onun ardınca gedir.

Əsas fərq: Fragment yalnız komponentin vəziyyətini deyil, həm də View iyerarxiyasını idarə edir. onCreateView metodu fragmentin kök View-ni qaytarır, onDestroyView isə bu iyerarxiyanı məhv edir. Bu, Fragment-ə ekran fİrlanması zamanı Activity-nin yenidən yaradılmasından sağ çıxmağa imkan verir: Fragment qorunur, onun View-i isə onCreateView-də yenidən yaradılır.

kotlin
class ProfileFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        return inflater.inflate(R.layout.fragment_profile, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val avatarImage: ImageView = view.findViewById(R.id.avatar_image)
        loadAvatar(avatarImage)
    }
}

onCreate və onCreateView arasındakı fərqi başa düşmək kritik əhəmiyyət daşıyır: onCreate Fragment-ın ömrü boyu bir dəfə çağırılır (hətta View yenidən yaradıldıqda belə), onCreateView isə Fragment öz View iyerarxiyasını hər yaratdıqda və ya yenidən yaratdıqda çağırılır. Məlumatların başlanğıc qurulması onCreate-də, UI bağlanması isə onViewCreated-da yerinə yetirilir.

LifecycleObserver və Jetpack

LifecycleObserver — Android Jetpack kitabxanasının komponenti, Activity və ya Fragment-də metodları yenidən təyin etmədən həyat dövri dəyişikliklərinə reaksiya verməyə imkan verir. Həyat dövri metodlarının hər birində kodu təkrarlamaq əvəzinə, tərtibatçı @OnLifecycleEvent annotasiyaları ilə ayrıca sinif yaradır və onu lifecycle.addObserver()-yə ötürür.

Jetpack həmçinin LifecycleOwner sinfini təmin edir — AppCompatActivity və Fragment tərəfindən tətbiq edilən interfeys. LifecycleOwner tətbiq edən hər bir obyekt LiveData abunələrini, lifecycleScope vasitəsilə korutinləri və WorkManager işini həyat dövri ilɘ əlaqəli idarə edə bilər. Bu, MVVM və Jetpack-ə əsaslanan müasir Android arxitekturasının təməl daşıdır.

kotlin
class MyLocationObserver(private val context: Context) : DefaultLifecycleObserver {
    override fun onStart(owner: LifecycleOwner) {
        startLocationUpdates()
    }

    override fun onStop(owner: LifecycleOwner) {
        stopLocationUpdates()
    }
}

// Activity-də:
lifecycle.addObserver(MyLocationObserver(this))

DefaultLifecycleObserver istifadəsi test etməni asanlaşdırır, kod təkrarlanmasını azaldır və həyat dövri məntiqini müxtəlif ekranlar arasında təkrar istifadə edilən edir. Bu, hər Activity-də onStart/onStop-un əl ilə yenidən təyin edilməsinin müasir əvəzidir. IT Sectr tərəfindən hazırlanmış Android proqramlarında biz LifecycleObserver-dan geolokasiya, Bluetooth skan etmə və analitika üçün istifadə edirik — bu, boilerplate kodun həcmini 30–40% azaldır.

Tez-tez verilən suallar

Həyat dövri metodlarında super çağırmasam nə olar?

Əgər super.onCreate() və ya hər hansı digər super həyat dövri metodunu çağırmasanız, sistem SuperNotCalledException istisnası atacaq və proqram çökəcək. Bu, Android Runtime-ın sərt tələbidir — hər metod icranı baza sinfinə həvalə etməlidir, əks halda daxili vəziyyət avtomatı növbəti vəziyyətə keçə bilməyəcək.

Niyə Activity ekran fİrlanarkən yenidən yaradılır?

Activity ekran fİrlanarkən yenidən yaradılır, çünki orientasiya dəyişikliyi cihaz konfiqurasiyasının dəyişikliyidir (configuration change). Defolt olaraq Android Activity-ni məhv edir və alternativ resursları (layout-land, values-land) yükləmək üçün yenisini yaradır. Yenidən yaratmanı söndürmək üçün manifestdə android:configChanges atributu əlavə edilə bilər, lakin Google məlumatları saxlamaq üçün ViewModel istifadə etməyi tövsiyə edir.

Proqramı bağlamazdan əvvəl məlumatları hansı metodda yadda saxlamalıyam?

Kritik məlumatlar onPause()-‐da yaddaşa yazılır, çünki bu, proqramın sistem tərəfindən öldürülməsindən əvvəl zəmanətlə çağırılan son metoddur. onStop və onDestroy-dan sonra sistem əlavə metodlar çağırmadan prosesi sonlandıra bilər. Qaralamalar və aralıq məlumatlar üçün SharedPreferences-dən apply() ilɘ və ya Room-dan korutinlərlɘ istifadə edin.

onPause onStop-dan nə ilə fərqlənir?

onPause Activity fokus itirdikdə, lakin qismən görünər qaldıqda çağırılır (məsələn, dialoq pəncərəsi açılıb). onStop Activity tamamilə ekrandan gizləndikdə çağırılır (başqa Activity və ya “Ev” düyməsi). Əsas praktiki fərq: onPause — məlumatların saxlanması üçün son nöqtə, onStop — fonda ehtiyac olmayan dinləyicilərin və sistem xidmətlərinin azad edilməsi yeri.

ViewModel nədir və həyat dövri ilɘ necɘ bağlıdır?

ViewModel — Android Jetpack komponenti, UI məlumatlarını saxlayır və konfiqurasiya dəyişikliklərinə (ekranın fİrlanması) avtomatik davam edir. ViewModel Activity yenidən yaradıldıqda məhv edilmir: o, LifecycleOwner (Activity və ya Fragment) tamamilɘ sonlanana qədər yaşayır. Bu, Bundle və onSaveInstanceState istifadə etmədən ekran fİrlanması zamanı məlumatların saxlanması problemini həll edir. ViewModel Google tərəfindən tövsiyə edilən MVVM arxitekturasının məcburi elementidir.

Nəticə

  • Activity Lifecycle — onCreate, onStart, onResume, onPause, onStop, onDestroy metodlarının ardıcıllığı, hər biri ekranın müəyyən bir fazasına cavabdehdir
  • onCreate — UI-nın başlanğıc qurulması və yenidən yaratma zamanı savedInstanceState əldə edilməsi; yeganə məcburi metod
  • onStart / onStop — görünmənin idarə edilməsi cütlüyü: sistem dinləyicilərinin və xidmətlərin qeydiyyatı və azad edilməsi
  • onResume / onPause — fokusun idarə edilməsi cütlüyü: eksklüziv resurslar (kamera, sensorlar) onResume-da açılır, onPause-da bağlanır
  • Ekranın fİrlanması — defolt olaraq Activity-ni yenidən yaradır; onSaveInstanceState + ViewModel vasitəsilɘ vəziyyətin saxlanması standart təcrübədir
  • Fragment həyat dövri — onAttach, onCreateView, onViewCreated, onDestroyView, onDetach metodları ilɘ əlavə edilmişdir; View Fragment-ın özündɘn ayrı yaradılır və məhv edilir
  • LifecycleObserver — Activity-də kodun təkrarlanması olmadan həyat dövrinin reaktiv izlənməsi üçün Jetpack komponenti
  • ViewModel — konfiqurasiya dəyişikliklərinə davam edir və Bundle-dɘ əl ilɘ yazmadan ekran fİrlanması zamanı məlumat itkisi problemini həll edir
  • Super qaydası — hər yenidən təyin edilmiş həyat dövri metodu super-versiyasını çağırmalıdır, əks halda sistem SuperNotCalledException atacaq

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

Həm də oxuyun