Жизненный цикл Activity
Состояния, колбэки, поворот экрана и смерть процесса
Activity имеет состояния создания, видимости и готовности к взаимодействию. Колбэки сообщают о переходах, но не образуют обязательный одноразовый маршрут: экран может возвращаться из остановленного состояния, а процесс — завершиться без последнего колбэка. Lifecycle.
Колбэки по порядку
Обычный первый вход: onCreate → onStart → onResume. При полном перекрытии другой Activity обычно следуют onPause → onStop; при возврате из stopped — onRestart → onStart → onResume. onDestroy вызывается при управляемом уничтожении экземпляра, но не гарантирован при смерти процесса. Activity API.
onStart связан с видимостью, onStop — с её потерей. Не приравнивайте resumed к единственному окну с фокусом: Android 10 (API 29)+ поддерживает несколько resumed Activity в multi-window. Диалог внутри текущей Activity сам по себе не равен запуску отдельной диалоговой Activity. Multi-window lifecycle.
Смена конфигурации
Если приложение не обрабатывает соответствующее изменение само, система пересоздаёт Activity. Полученный через того же логического ViewModelStoreOwner ViewModel переживает это пересоздание, но не смерть процесса. Обычное поле Activity и вручную созданный ViewModel() такой гарантии не получают. ViewModel.
Saved state хранит небольшой снимок данных для восстановления; это не долговременная запись всей модели. SavedStateHandle помогает заново создать состояние после системного уничтожения процесса, но не сохраняет сам экземпляр ViewModel. Важные данные храните отдельно. Save UI states.
Если onSaveInstanceState вызывается на Android 9+ для приложения с targetSdk >= 28, он идёт после onStop. Для старых target действует прежний порядок; сам вызов не гарантирован, например при finish(). Контракт метода.
Lifecycle-aware компоненты
Для Android Compose собирайте Flow через collectAsStateWithLifecycle; вне Compose используйте repeatOnLifecycle(STARTED) из lifecycle-aware scope. Сбор запускается заново при возвращении в нужное состояние. Сам LaunchedEffect привязан к композиции и не означает автоматическую остановку на onStop. Корутины и Lifecycle, repeatOnLifecycle.