Ответ
При смене ориентации Activity уничтожается (onDestroy()) и создается заново (onCreate()). Это происходит потому, что система ищет подходящие ресурсы (например, layout для landscape) и перезагружает их.
Чтобы сохранить состояние:
- Используйте
onSaveInstanceState()для временных данных:
override fun onSaveInstanceState(outState: Bundle) {
outState.putString("KEY", "value")
super.onSaveInstanceState(outState)
}
- Восстанавливайте в
onCreate():
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val value = savedInstanceState?.getString("KEY")
}
Альтернативы:
- Запретить пересоздание через
android:configChangesв манифесте - Использовать ViewModel для сохранения данных
- Сохранять состояние в onRetainNonConfigurationInstance() (устарело)