Sobes.tech
Middle
212

¿Cómo guardar el estado de ViewModel en los componentes arquitectónicos de Android?

Respuesta de la IA

sobes.tech AI

Для сохранения состояния ViewModel, которое переживет уничтожение процесса, используется SavedStateHandle.

SavedStateHandle представляет собой Map-подобное хранилище, связанное с сохраненным состоянием Activity или Fragment.

Принцип работы:

  1. ViewModel получает SavedStateHandle как параметр конструктора.
  2. Данные сохраняются в SavedStateHandle с помощью метода set().
  3. При восстановлении Activity/Fragment, сохраненные данные автоматически доступны в SavedStateHandle ViewModel, который создастся заново.

Пример использования:

class MyViewModel(private val state: SavedStateHandle) : ViewModel() {

    private val _myValue = state.getLiveData<String>("myKey")
    val myValue: LiveData<String> get() = _myValue

    fun saveValue(newValue: String) {
        state.set("myKey", newValue)
    }
}

SavedStateHandle поддерживает сохранение примитивных типов, таких как Int, String, Boolean, а также parcelable и serializable объекты.

Важно понимать, что SavedStateHandle предназначен для сохранения небольшого количества UI-связанных данных. Для сохранения более сложных или больших объемов данных следует использовать другие механизмы, такие как Room Database или DataStore.