Какие знаешь способы сохранения состояния ViewModel

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

Ответ

ViewModel сохраняет состояние при повороте экрана автоматически. Однако для сохранения данных при уничтожении процесса (например, системой) используйте:

  1. SavedStateHandle - встроенное решение:
class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
    var state: String
        get() = savedStateHandle["key"] ?: ""
        set(value) = savedStateHandle.set("key", value)
}
  1. onSaveInstanceState() - для активити/фрагментов:
override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putString("KEY", data)
}
  1. Сохранение в базу данных (Room) - для сложных данных

  2. SharedPreferences - для простых значений

Для критически важных данных лучше использовать комбинацию SavedStateHandle + постоянное хранилище (БД).