Когда происходит смена конфигурации в Android-приложении

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

Ответ

При смене конфигурации (поворот экрана, изменение языка, размера шрифта и т.д.) система уничтожает текущую Activity и создает её заново. Это приводит к вызову:

  1. onPause()
  2. onStop()
  3. onDestroy()
  4. onCreate()
  5. onStart()
  6. onResume()

Для сохранения состояния используйте:

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putString("KEY", "value")
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val value = savedInstanceState?.getString("KEY")
}

Альтернативы:

  • ViewModel (сохраняется при смене конфигурации)
  • android:configChanges в манифесте (не рекомендуется)