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:
ViewModelerhältSavedStateHandleals Parameter im Konstruktor.- Daten werden mit der Methode
set()inSavedStateHandlegespeichert. - Beim Wiederherstellen der Activity/Fragment sind die gespeicherten Daten automatisch im
SavedStateHandledesViewModelverfü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.