Sobes.tech
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:

  1. ViewModel ontvangt SavedStateHandle als parameter in de constructor.
  2. Gegevens worden opgeslagen in SavedStateHandle met behulp van de methode set().
  3. Bij het herstellen van de Activity/Fragment zijn de opgeslagen gegevens automatisch beschikbaar in SavedStateHandle van het ViewModel, 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.