Активности и жизненный цикл
Узнайте, что такое Activity, изучите обратные вызовы жизненного цикла Activity (onCreate, onStart, onResume, onPause, onStop, onDestroy) и используйте ViewBinding.
«Активности и жизненный цикл» — бесплатный урок Android Academy на CoddyKit. Это урок 2 из 7. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 7 уроков всего.
Что такое активность?
Активность — это отдельный экран приложения Android.
- Каждый экран (вход, главный экран, настройки) является активностью
- Она управляет макетом (XML) и взаимодействиями с пользователем
- Она объявляется в AndroidManifest.xml
Представляйте её как аналог веб-страницы в Android: каждая страница является активностью.
Жизненный цикл активности
Активность проходит через последовательность состояний жизненного цикла, когда пользователь перемещается по приложению:
- Создана → Запущена → Возобновлена (видима и активна)
- Приостановлена (частично скрыта)
- Остановлена (полностью скрыта)
- Уничтожена (активность больше не существует)
Переопределяйте методы жизненного цикла, чтобы реагировать на эти переходы.
Обратные вызовы жизненного цикла
Шесть основных обратных вызовов жизненного цикла:
onCreate()— активность создаётся. Здесь настройте макет.onStart()— активность становится видимой.onResume()— активность находится на переднем плане, пользователь может взаимодействовать с ней.onPause()— пользователь уходит. Сохраните временные данные.onStop()— активность больше не видна.onDestroy()— активность уничтожается.
Пример MainActivity
Минимальная активность с журналированием жизненного цикла:
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private val TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.d(TAG, "onCreate")
}
override fun onResume() {
super.onResume()
Log.d(TAG, "onResume — user is here")
}
override fun onPause() {
super.onPause()
Log.d(TAG, "onPause — saving state")
}
override fun onDestroy() {
super.onDestroy()
Log.d(TAG, "onDestroy")
}
}Почему важен жизненный цикл
Распространённые ошибки, вызванные игнорированием жизненного цикла:
- воспроизведение видео в
onResumeбез его приостановки вonPause— разрядка батареи - регистрация слушателя датчика в
onCreateбез отмены регистрации вonDestroy— утечка памяти - несохранение данных формы в
onPause— пользователь теряет прогресс во время телефонного звонка
Сохранение состояния: onSaveInstanceState
Когда пользователь поворачивает телефон, активность уничтожается и создаётся заново. Состояние интерфейса теряется.
Сохраните временное состояние в onSaveInstanceState(bundle) и восстановите его в onCreate(savedInstanceState).
Сохранение и восстановление состояния
Сохраняйте данные при изменениях конфигурации:
class CounterActivity : AppCompatActivity() {
private var count = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_counter)
// Restore saved state after rotation
count = savedInstanceState?.getInt("count") ?: 0
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("count", count)
}
}Стек возврата
Android управляет стеком возврата активностей:
- запуск новой активности помещает её в стек
- нажатие кнопки «Назад» извлекает верхнюю активность из стека и уничтожает её
- предыдущая активность автоматически возобновляется
Поэтому не следует вручную вызывать finish(), если только Вы специально не хотите удалить текущий экран из стека возврата.
Изменения конфигурации
Любое изменение конфигурации (поворот, смена языка, подключение клавиатуры) по умолчанию заново создаёт активность.
Современное решение — использовать ViewModel: он переживает изменения конфигурации и безопасно хранит Ваши данные. О ViewModel Вы узнаете в модуле «Архитектура».
Быстрая проверка
В каком методе жизненного цикла следует настроить макет (вызвать setContentView)?
Итоги: активности и жизненный цикл
Теперь Вы понимаете, как работают активности Android:
- активность = один экран приложения
- жизненный цикл: onCreate → onStart → onResume → onPause → onStop → onDestroy
- временное состояние сохраняется в
onSaveInstanceState - поворот уничтожает активность и создаёт её заново
- Android автоматически управляет стеком возврата
Далее: проектирование экранов с помощью макетов и представлений.
Часто задаваемые вопросы
Урок «Активности и жизненный цикл» бесплатный?
Да — полный текст урока «Активности и жизненный цикл» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 7 уроков всего.
Чему я научусь в уроке «Активности и жизненный цикл»?
Узнайте, что такое Activity, изучите обратные вызовы жизненного цикла Activity (onCreate, onStart, onResume, onPause, onStop, onDestroy) и используйте ViewBinding. Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 7.
Сколько времени занимает урок «Активности и жизненный цикл»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Структура проекта и манифест
- Активности и жизненный цикл
- Макеты и представления
- Обработка ввода пользователя
- Намерения и навигация
- Фрагменты
- Разрешения и запросы во время выполнения