Жизненный цикл Android
Разберитесь в жизненных циклах activity и композиции
«Жизненный цикл Android» — бесплатный урок Android Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.
Что такое жизненный цикл
Каждая Android-активность проходит через последовательность состояний, когда пользователь открывает приложение, покидает его и возвращается. Это и есть жизненный цикл.
Понимание жизненного цикла позволяет запускать и останавливать работу в нужные моменты.
Основные обратные вызовы активности
Классические обратные вызовы жизненного цикла активности выполняются в следующем порядке:
onCreate— активность создаётся.onStart— активность становится видимой.onResume— активность находится на переднем плане и готова к взаимодействию.onPause/onStop/onDestroy— выход из активности.
Типичный сценарий
Открытие приложения: onCreate → onStart → onResume.
Нажатие кнопки «Домой»: onPause → onStop.
Возвращение: onRestart → onStart → onResume.
Состояния и события жизненного цикла
Библиотека Jetpack жизненного цикла представляет его с помощью состояний (CREATED, STARTED, RESUMED, DESTROYED) и событий (ON_CREATE, ON_START, ...).
Компоненты могут наблюдать за ними вместо переопределения исходных обратных вызовов.
LifecycleOwner
Активности, фрагменты и хосты Compose являются LifecycleOwners. Они предоставляют объект Lifecycle, за которым могут наблюдать другие компоненты.
val owner: LifecycleOwner = this // an Activity
val lifecycle = owner.lifecycleПочему это важно для ресурсов
Многие ресурсы должны быть активны только пока экран видим:
- Обновления местоположения.
- Слушатели датчиков.
- Сеансы работы с камерой.
Запускайте их в onStart/onResume, а останавливайте в onStop/onPause, чтобы экономить заряд батареи и избегать утечек.
Жизненный цикл в Jetpack Compose
У компонуемых функций нет обратных вызовов активности. Вместо этого у них есть жизненный цикл композиции: они входят в композицию, повторно компонуются и в итоге покидают её.
Реакция на композицию с помощью DisposableEffect
DisposableEffect выполняет настройку, когда компонуемая функция входит в композицию, и очистку, когда она её покидает.
@Composable
fun Screen() {
DisposableEffect(Unit) {
// setup, e.g. register listener
onDispose {
// cleanup when leaving composition
}
}
}Наблюдение за реальным жизненным циклом в Compose
Чтобы реагировать на фактические события жизненного цикла активности из компонуемой функции, наблюдайте за LifecycleOwner с помощью DefaultLifecycleObserver.
@Composable
fun OnResume(onResume: () -> Unit) {
val owner = LocalLifecycleOwner.current
DisposableEffect(owner) {
val obs = object : DefaultLifecycleObserver {
override fun onResume(o: LifecycleOwner) = onResume()
}
owner.lifecycle.addObserver(obs)
onDispose { owner.lifecycle.removeObserver(obs) }
}
}ViewModel и жизненный цикл
Помните: ViewModel переживает отдельные состояния жизненного цикла, такие как onStart/onStop. Она очищается только тогда, когда владелец окончательно исчезает. Именно поэтому хранить состояние в ней безопасно.
Объединяем всё вместе
Хорошо организованный экран:
- Хранит долговременное состояние в ViewModel.
- Запускает и останавливает ресурсы, необходимые только для видимого экрана, с учётом жизненного цикла.
- Собирает потоки только пока пользовательский интерфейс находится в состоянии STARTED или выше (в следующем уроке).
Быстрая проверка
Проверьте свои знания о жизненном цикле.
Повторение
Вы узнали:
- Активности проходят через состояния CREATED, STARTED, RESUMED, DESTROYED.
- У Compose есть собственный жизненный цикл композиции, которым управляет
DisposableEffect. - Наблюдайте за
LifecycleOwner, чтобы реагировать на реальные события жизненного цикла. - ViewModels намеренно переживают эти состояния.
Часто задаваемые вопросы
Урок «Жизненный цикл Android» бесплатный?
Да — полный текст урока «Жизненный цикл Android» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Жизненный цикл Android»?
Разберитесь в жизненных циклах activity и композиции Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Жизненный цикл Android»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Зачем нужен ViewModel
- Предоставление состояния из ViewModel
- Жизненный цикл Android
- collectAsStateWithLifecycle