Sobes.tech
Junior

Android-деги Activityнин өмүр циклі жөнүндө эмне айта аласыз?

sobes.tech AI

AIден жооп

Жашоо цикли Activity — бул күйдөрдүн жана алардын ортосундагы өтүүлөрдүн топтому, ар бир Activity үлгүсү түзүлгөндөн өлтүрүлгөнгө чейин өтөт. Ал callback-методдордун топтому менен аныкталган.

Жашоо циклинин негизги callback-методдору:

  • onCreate(): биринчи жолу Activity түзүлгөндө чакырылат. Бул жерде UIнин 初始化, маалыматтарды байлоо жана башка бир жолку иш-аракеттер жүргүзүлөт.
  • onStart(): Activity колдонуучу үчүн көрүнүктүү болгондо чакырылат, бирок ал дагы фокус албады.
  • onResume(): Activity фокус алганда жана активдүү болгондо чакырылат. Бул жерде адатта анимациялар жана башка интерактивдүү иш-аракеттер башталат.
  • onPause(): Activity фокусун жоготкондо чакырылат, бирок дагы көрүнүп турат (мисалы, жарым透明 диалог терезе үстүндө). Бул жерде ресурстарды талап кылган иш-аракеттер токтотулушу керек.
  • onStop(): Activity колдонуучу үчүн көрүнбөй калганда чакырылат. Бул жерде сакталбаган маалыматтарды сактоо жана керек эмес ресурстарды бошотуу керек.
  • onDestroy(): Activity жок кылынар алдында чакырылат. Бул жерде бардык калган ресурстар бошотулат.
  • onRestart(): onStop()тен кийин чакырылат жана кайра көрсөтүү үчүн. Андан соң onStart() келет.

Графикалык түрдө, жашоо цикли мындайча көрсөтүлөт:

Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed

Мындан тышкары, өтүүлөр бар:

  • Created -> Started (onStart()тен кийин)
  • Started -> Resumed (onResume()тен кийин)
  • Resumed -> Paused (фокус жоготулганда)
  • Paused -> Resumed (фокус кайра алганда)
  • Paused -> Stopped (толук жашырылганда)
  • Stopped -> Destroyed (активдик аяктагандан кийин)
  • Stopped -> Restarted -> Started (onRestart()тен кийин)

Мөөнөттүү Activity абалын туура башкаруу маанилүү, бул жаатта утечкелердин алдын алуу жана колдонмонун туура иштешин камсыз кылуу үчүн. onSaveInstanceState() колдонулат (onStop() алдында), ал эми калыбына келтирүү onCreate() же onRestoreInstanceState() аркылуу жүргүзүлөт (андан кийин onStart()).

onSaveInstanceState() колдонуу мисалы:

// Абалды сактоо
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("my_data", "some_value")
    super.onSaveInstanceState(outState)
}

// Абалды калыбына келтирүү
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...
    if (savedInstanceState != null) {
        val myData = savedInstanceState.getString("my_data")
        // myData колдонуу
    }
}