Sobes.tech
Middle

Cum se păstrează starea ViewModel în componentele arhitecturale Android?

sobes.tech AI

Răspuns de la AI

Pentru a salva starea ViewModel, care va supraviețui distrugerii procesului, se folosește SavedStateHandle.

SavedStateHandle este un depozit asemănător unui Map, asociat cu starea salvată a unei Activity sau Fragment.

Principiul de funcționare:

  1. ViewModel primește SavedStateHandle ca parametru în constructor.
  2. Datele sunt salvate în SavedStateHandle folosind metoda set().
  3. La restaurarea Activity/Fragment, datele salvate sunt disponibile automat în SavedStateHandle al ViewModel, care va fi recreat.

Exemplu de utilizare:

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 suportă salvarea tipurilor primitive, precum Int, String, Boolean, precum și obiecte parcelable și serializabile.

Este important să înțelegi că SavedStateHandle este destinat pentru salvarea unei cantități mici de date legate de UI. Pentru salvarea datelor mai complexe sau mai mari, trebuie utilizate alte mecanisme, precum Room Database sau DataStore.