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:
ViewModelprejmeSavedStateHandlekot parameter v konstruktorju.- Podatki se shranijo v
SavedStateHandlez metodoset(). - Ob ponovnem zagonu Activity/Fragment so shranjeni podatki samodejno na voljo v
SavedStateHandleViewModel, 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.