Как Android обрабатывает изменения конфигурации Activity?

при изменении конфигурации — например, ориентации, языка или параметров экрана — система перезапускает Activity перед этим вызывается onSaveInstanceState() для сохранения текущего состояния после чего Activity…

Короткий ответ

Что ответить на собеседовании

при изменении конфигурации — например, ориентации, языка или параметров экрана — система перезапускает Activity перед этим вызывается onSaveInstanceState() для сохранения текущего состояния после чего Activity уничтожается через onPause(), onStop() и onDestroy() затем создаётся новый экземпляр Activity, уже работающий с обновлённой конфигурацией сохранённые данные восстанавливаются в onCreate() либо onRestoreInstanceState() стандартное поведение можно изменить с помощью android:configChanges, указанного в манифесте корректная обработка конфигурации необходима для плавного UX и защиты пользовательских данных от потери

Подробный разбор

Ответ с пояснениями

Как Android обрабатывает изменения конфигурации Activity?

  • при изменении конфигурации — например, ориентации, языка или параметров экрана — система перезапускает Activity
  • перед этим вызывается onSaveInstanceState() для сохранения текущего состояния
  • после чего Activity уничтожается через onPause(), onStop() и onDestroy()
  • затем создаётся новый экземпляр Activity, уже работающий с обновлённой конфигурацией
  • сохранённые данные восстанавливаются в onCreate() либо onRestoreInstanceState()
  • стандартное поведение можно изменить с помощью android:configChanges, указанного в манифесте
  • корректная обработка конфигурации необходима для плавного UX и защиты пользовательских данных от потери

Подробный ответ

Основной ответ

В Android изменение конфигурации — например, поворот устройства, смена языка или изменение размера экрана — обычно вызывает уничтожение текущей Activity и создание нового экземпляра с обновлёнными параметрами. Благодаря этому система заново загружает UI и ресурсы, соответствующие новой конфигурации устройства. В процессе вызываются методы жизненного цикла onPause(), onStop(), onDestroy(), после чего создаётся новая Activity через onCreate() с актуальными ресурсами. Если полное пересоздание не требуется, разработчик может самостоятельно обрабатывать изменения с помощью атрибута android:configChanges в манифесте, однако в таком случае управление обновлением конфигурации ложится на него.

Ключевые моменты

  • Полное пересоздание Activity — штатный механизм, который гарантирует загрузку ресурсов, подходящих для новых условий: layout, strings, drawable и других. В React Native и Jetpack Compose принцип похожий, хотя реализуется средствами соответствующей платформы.
  • Сохранение состояния: Для восстановления состояния UI применяют связку onSaveInstanceState() + Bundle. Кроме того, часто используют ViewModel из архитектуры Jetpack: она сохраняется при изменениях конфигурации и не уничтожается вместе с Activity.
  • Оптимизации: В Android 13+ доступны новые API, предназначенные для более эффективной работы с конфигурациями. Например, OnConfigurationChangedCallback позволяет гибче реагировать на изменения, не пересоздавая Activity.

Практический контекст

При разработке Android-приложений важно надёжно сохранять и восстанавливать данные во время изменения конфигурации, чтобы пользователь не терял текущее состояние. На практике для этого часто используют ViewModel и SavedStateHandle из Jetpack. Кастомную обработку через configChanges обычно оставляют для узкоспециализированных задач, поскольку она помогает избежать дополнительных багов и роста технического долга.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку