Какие знаешь способы сохранения состояния экрана при смене конфигурации устройства

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

Ответ

Использование onSaveInstanceState() для сохранения простых данных в Bundle. Пример:

override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("KEY", "value")
    super.onSaveInstanceState(outState)
}

ViewModel - сохраняет данные при повороте экрана. Данные живут до уничтожения активити/фрагмента:

val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)

Сохранение в постоянное хранилище:

  • SharedPreferences
  • Room Database
  • Файлы

Для фрагментов - setRetainInstance(true) (устарел, лучше использовать ViewModel)

Для сложных объектов - реализация Parcelable/Serializable и сохранение в Bundle