Работал ли с флагом configChanges у компонентов Android

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

Ответ

Флаг configChanges в манифесте позволяет Activity самостоятельно обрабатывать изменения конфигурации (поворот экрана, изменение языка и т.д.), предотвращая пересоздание.

Основные варианты:

android:configChanges="orientation|screenSize|keyboardHidden"

Плюсы:

  • Улучшает производительность (избегаем пересоздания)
  • Контроль над поведением при изменениях

Минусы:

  • Нужно вручную обрабатывать изменения в onConfigurationChanged()
  • Легко упустить важные изменения (например, локализация)

Пример:

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        // Обновляем UI для ландшафта
    }
}

Используйте осторожно, только когда действительно нужно сохранить состояние!