Какие знаешь способы переживания изменения состояния экрана приложения

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

Ответ

В Android есть несколько способов сохранить состояние при повороте экрана:

  1. onSaveInstanceState() – сохраняет данные в Bundle перед уничтожением активити:
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("KEY", "value")
    super.onSaveInstanceState(outState)
}
  1. ViewModel – сохраняет данные при повороте:
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
  1. Retained Fragments – фрагменты с setRetainInstance(true)

  2. onRestoreInstanceState() – восстановление из Bundle:

override fun onRestoreInstanceState(savedInstanceState: Bundle) {
    val value = savedInstanceState.getString("KEY")
}
  1. Использование ViewBinding/DataBinding – автоматически сохраняет состояние View

Для сложных данных лучше использовать ViewModel + Room/SavedStateHandle. Для простых случаев хватит Bundle.