Sobes.tech
Middle
208

Come salvare lo stato di ViewModel nei componenti architetturali di Android?

Risposta dell'AI

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.