Шумо дар бораи давраи ҳаёти Activity дар Android чӣ мегӯед?
sobes.tech AI
Ҷавоб аз AI
Цикл життя Activity — це набір станів і переходів між ними, через які проходить кожен екземпляр Activity з моменту створення до знищення. Він визначається набором callback-методів.
Основні callback-методи життєвого циклу:
onCreate(): Викликається при першому створенніActivity. Тут відбувається ініціалізація UI, прив'язка даних та інші одноразові дії.onStart(): Викликається, колиActivityстає видимою для користувача, але ще не отримала фокус.onResume(): Викликається, колиActivityотримує фокус і стає активною. Тут зазвичай починаються анімації та інші інтерактивні дії.onPause(): Викликається, колиActivityвтрачає фокус, але ще видима (наприклад, напівпрозоре діалогове вікно поверх). Тут слід зупинити ресурсоємні операції.onStop(): Викликається, колиActivityбільше не видима користувачу. Тут зберігаються незбережені дані та звільняються ресурси, які більше не потрібні.onDestroy(): Викликається перед тим, якActivityбуде знищена. Тут звільняються всі залишкові ресурси.onRestart(): Викликається післяonStop()при повторному відображенніActivity. За ним слідує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 у цих callback-методах, щоб уникнути витоків пам'яті та забезпечити коректну поведінку додатку при зміні конфігурації або перемиканні між 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
}
}