Sobes.tech
Middle

Wie speichert man den Zustand von ViewModel in den Architekturkomponenten von Android?

sobes.tech KI

Antwort von AI

Um SavedStateHandle wird verwendet, um den Zustand des ViewModel zu speichern, der den Prozessübergang überleben soll.

SavedStateHandle ist ein Map-ähnlicher Speicher, der mit dem gespeicherten Zustand einer Activity oder Fragment verbunden ist.

Funktionsprinzip:

  1. ViewModel erhält SavedStateHandle als Parameter im Konstruktor.
  2. Daten werden mit der Methode set() in SavedStateHandle gespeichert.
  3. Beim Wiederherstellen der Activity/Fragment sind die gespeicherten Daten automatisch im SavedStateHandle des ViewModel verfügbar, das neu erstellt wird.

Anwendungsbeispiel:

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 unterstützt die Speicherung primitiver Typen wie Int, String, Boolean sowie parcelable und serializable Objekte.

Es ist wichtig zu verstehen, dass SavedStateHandle für die Speicherung einer kleinen Menge UI-bezogener Daten gedacht ist. Für komplexere oder größere Datenmengen sollten andere Mechanismen wie Room Database oder DataStore verwendet werden.