0Pricing
Android Academy · Урок

Жизненный цикл 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 — локальная установка не требуется.

Все уроки этого курса

  1. Зачем нужен ViewModel
  2. Предоставление состояния из ViewModel
  3. Жизненный цикл Android
  4. collectAsStateWithLifecycle
← Назад к Android Academy