Sobes.tech
Middle
209

Comment sauvegarder l'état de ViewModel dans les composants architecturaux d'Android?

Réponse de l'IA

sobes.tech IA

Для сохранения состояния 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.