Какие компоненты реагируют на смену конфигурации?

Что такое смена конфигурации?

Смена orientation, языка, темы, DPI, UI Mode, fontScale и др.
Android при этом может пересоздать компоненты, чтобы адаптировать UI.

Какие компоненты реагируют на смену конфигурации?

1. Activity

  • По умолчанию пересоздаётся: вызывается onPause() => onStop() => onDestroy(), затем создаётся заново onCreate()
  • Получает новый Resources.Configuration
  • onSaveInstanceState() вызывается перед уничтожением

Основной компонент, который всегда реагирует на конфигурационные изменения, если ты явно не переопределил поведение.

2. Fragment

  • Следует за Activity: его View уничтожается, но сам Fragment может остаться в памяти (если находится в back stack)
  • Жизненный цикл: nginxКопироватьРедактироватьonPause => onStop => onDestroyView => onCreateView => onStart => onResume

Может использовать setRetainInstance(true) (устаревший способ) или ViewModel, чтобы пережить изменения.

3. View

  • Пересоздаётся заново, если Activity пересоздана
  • Измеряется и пересоздаётся заново через onMeasure() / onLayout() / onDraw()
  • CustomView должен учитывать изменение размеров, ориентации, языка и т.п.

4. ViewModel

  • не пересоздаётся при смене конфигурации
  • Привязан к жизненному циклу ViewModelStoreOwner (Activity или Fragment)
  • Используется для переживания конфигурационных изменений

Один из главных инструментов сохранения состояния между пересозданиями UI.

5. Service

  • Не реагирует на смену конфигурации
  • Живёт независимо от UI
  • Даже если Activity пересоздана, Service продолжает работать

6. BroadcastReceiver, ContentProvider

  • Не пересоздаются при конфигурации
  • Если зарегистрированы в Manifest и-или не зависят от UI


Опубликовано

в

от

Метки: