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 колдонуу
}
}