Ответ
В Android есть несколько способов сохранить состояние при повороте экрана:
- onSaveInstanceState() – сохраняет данные в Bundle перед уничтожением активити:
override fun onSaveInstanceState(outState: Bundle) {
outState.putString("KEY", "value")
super.onSaveInstanceState(outState)
}
- ViewModel – сохраняет данные при повороте:
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
-
Retained Fragments – фрагменты с setRetainInstance(true)
-
onRestoreInstanceState() – восстановление из Bundle:
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
val value = savedInstanceState.getString("KEY")
}
- Использование ViewBinding/DataBinding – автоматически сохраняет состояние View
Для сложных данных лучше использовать ViewModel + Room/SavedStateHandle. Для простых случаев хватит Bundle.