Middle
Hoe sla je de staat van een ViewModel op in Android-architectuurcomponenten?
sobes.tech AI
Antwoord van AI
Om de toestand van ViewModel op te slaan, die de vernietiging van het proces overleeft, wordt SavedStateHandle gebruikt.
SavedStateHandle is een opslag die lijkt op een Map, gekoppeld aan de opgeslagen toestand van een Activity of Fragment.
Werking:
ViewModelontvangtSavedStateHandleals parameter in de constructor.- Gegevens worden opgeslagen in
SavedStateHandlemet behulp van de methodeset(). - Bij het herstellen van de Activity/Fragment zijn de opgeslagen gegevens automatisch beschikbaar in
SavedStateHandlevan hetViewModel, dat opnieuw wordt aangemaakt.
Voorbeeld van gebruik:
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 ondersteunt het opslaan van primitieve types zoals Int, String, Boolean, evenals parcelable en serializable objecten.
Het is belangrijk te begrijpen dat SavedStateHandle bedoeld is voor het opslaan van een kleine hoeveelheid UI-gerelateerde gegevens. Voor het opslaan van complexere of grotere gegevens moet je andere mechanismen gebruiken, zoals Room Database of DataStore.