Что произойдет с Activity при смене ориентации

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

Ответ

При смене ориентации Activity уничтожается (onDestroy()) и создается заново (onCreate()). Это происходит потому, что система ищет подходящие ресурсы (например, layout для landscape) и перезагружает их.

Чтобы сохранить состояние:

  1. Используйте onSaveInstanceState() для временных данных:
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("KEY", "value")
    super.onSaveInstanceState(outState)
}
  1. Восстанавливайте в onCreate():
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val value = savedInstanceState?.getString("KEY")
}

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

  • Запретить пересоздание через android:configChanges в манифесте
  • Использовать ViewModel для сохранения данных
  • Сохранять состояние в onRetainNonConfigurationInstance() (устарело)