Как ведет жизненный цикл Activity при изменении конфигурации

«Как ведет жизненный цикл Activity при изменении конфигурации» — вопрос из категории 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 + SavedStateHandle или onRetainNonConfigurationInstance(). Чтобы избежать пересоздания, укажите configChanges в манифесте, но это не рекомендуется для большинства случаев.