Какие изменения в системе провоцируют изменения конфигурации

«Какие изменения в системе провоцируют изменения конфигурации» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Изменения конфигурации происходят при событиях, требующих пересоздания Activity/Fragment. Основные триггеры:

  • Смена ориентации экрана
  • Изменение языка/локали
  • Подключение физической клавиатуры
  • Изменение размера окна (multi-window режим)
  • Изменение темы (dark/light mode)

Для сохранения данных используйте onSaveInstanceState() или ViewModel:

// ViewModel example
class MyViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// In Activity
private val viewModel by viewModels<MyViewModel>()

Для ручного управления конфигурацией добавьте в манифест:
android:configChanges="orientation|screenSize" (но это антипаттерн в большинстве случаев)