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:
ViewModelprimeșteSavedStateHandleca parametru în constructor.- Datele sunt salvate în
SavedStateHandlefolosind metodaset(). - La restaurarea Activity/Fragment, datele salvate sunt disponibile automat în
SavedStateHandlealViewModel, 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.