Что вы можете рассказать о жизненном цикле Activity в Android?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech 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
}
}