Sobes.tech
Middle

Ako uložiť stav ViewModel v architektonických komponentoch Android?

sobes.tech AI

Odpoveď od AI

Na shranjevanje stanja ViewModel, ki bo preživelo uničenje procesa, se uporablja SavedStateHandle.

SavedStateHandle je shranjevanje podobno zemljevidu, povezano s shranjenim stanjem Activity ali Fragmenta.

Načelo delovanja:

  1. ViewModel prejme SavedStateHandle kot parameter v konstruktorju.
  2. Podatki se shranijo v SavedStateHandle z metodo set().
  3. Ob ponovnem zagonu Activity/Fragment so shranjeni podatki samodejno na voljo v SavedStateHandle ViewModel, ki bo znova ustvarjen.

Primer uporabe:

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 podpira shranjevanje primitivnih tipov, kot so Int, String, Boolean, pa tudi parcelable in serializable objekti.

Pomembno je razumeti, da je SavedStateHandle namenjen za shranjevanje majhne količine podatkov, povezanih z UI. Za shranjevanje bolj zapletenih ali večjih količin podatkov je treba uporabiti druge mehanizme, kot so Room Database ali DataStore.