Как сохранить данные из ViewModel для переиспользования

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

Ответ

Для сохранения данных в ViewModel между пересозданиями активити/фрагмента используйте ViewModel с SavedStateHandle. Это позволяет сохранять данные даже при убийстве процесса системой.

Пример:

class MyViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
    private val _counter = savedStateHandle.getLiveData("counter", 0)
    val counter: LiveData<Int> = _counter

    fun increment() {
        _counter.value = (_counter.value ?: 0) + 1
    }
}

Ключевые моменты:

  1. SavedStateHandle автоматически сохраняет простые типы (Int, String и т.д.)
  2. Для сложных объектов используйте Parcelable или Serializable
  3. Данные сохраняются между поворотами экрана и при временном убийстве процесса
  4. Для навигации между фрагментами лучше использовать аргументы Navigation Component