Sobes.tech
Junior

Шумо дар бораи давраи ҳаёти 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
    }
}