Ответ
При смене ориентации Activity пересоздается. Основные способы обработки:
- Сохранение состояния через
onSaveInstanceState():
override fun onSaveInstanceState(outState: Bundle) {
outState.putString("KEY", importantData)
super.onSaveInstanceState(outState)
}
- Восстановление в
onCreate():
override fun onCreate(savedInstanceState: Bundle?) {
if (savedInstanceState != null) {
importantData = savedInstanceState.getString("KEY")
}
}
- Фиксация ориентации в манифесте:
<activity android:screenOrientation="portrait" />
- Ручная обработка конфигурации в манифесте:
android:configChanges="orientation|screenSize"
и переопределение onConfigurationChanged()
- ViewModel - сохраняет данные при повороте экрана
Для простых данных лучше использовать ViewModel или Bundle, для сложных случаев - комбинацию подходов. Фиксацию ориентации стоит применять осторожно.