Что делать при повороте экрана в Android
При смене ориентации приложения Activity уничтожается и создается заново. Удаляются, соответственно, и все объекты. Вызываются коллбэки в составе жизненного цикла onPause(), onStop(), onSaveInstanceState(), onDestroy() – onCreate(), onStart(), onRestoreInstanceState(), onResume().
Чтобы сохранить созданные в активити объекты и данные, необходимо реализовать пару методов: первый позволяет сохранить данные – onSaveInstanceState(), а второй восстановить – onRestoreInstanceState().
Для сохранения данных переопределяется onSaveInstanceState() и данные упаковываются в объект типа Bundle.
При реинициализации активити, Bundle с сохраненным состоянием передается в onCreate() и в onRestoreInstanceState().
Система вызывает onSaveInstanceState() и onRestoreInstanceState() только в том случае, когда необходимо сохранить состояние, например при повороте экрана или в случае уничтожении Activity при нехватке памяти. Данные коллбэки не вызываются, если пользователь выходит из активити нажав Back или если активити убивается вызовом finish().
Вызов метода onSaveInstanceState() зависит от версии API. До API 28 метод вызывается до onStop(), а начиная API 28 после onStop(). onRestoreInstanceState() вызывается после onStart().
Бесплатные Telegram-боты для обучения
Практика с проверкой кода и помощью ИИ-ментора
AndroidSprint AI Mentor
Проверяет Pull Request'ы в GitHub, проводит тестовые собеседования с голосом и таймером, помогает разбираться с кодом 24/7
Попробовать ИИ-ментора →KotlinSprint Bot
22 урока Kotlin, 220 тестов, 120 практических задач с код-ревью
Начать обучение Kotlin →