Middle
211
Hogyan menthető el a ViewModel állapota az Android architekturális komponenseiben?
Válasz az MI-től
sobes.tech MI
Для сохранения состояния ViewModel, которое переживет уничтожение процесса, используется SavedStateHandle.
SavedStateHandle представляет собой Map-подобное хранилище, связанное с сохраненным состоянием Activity или Fragment.
Принцип работы:
ViewModelполучаетSavedStateHandleкак параметр конструктора.- Данные сохраняются в
SavedStateHandleс помощью методаset(). - При восстановлении Activity/Fragment, сохраненные данные автоматически доступны в
SavedStateHandleViewModel, который создастся заново.
Пример использования:
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 поддерживает сохранение примитивных типов, таких как Int, String, Boolean, а также parcelable и serializable объекты.
Важно понимать, что SavedStateHandle предназначен для сохранения небольшого количества UI-связанных данных. Для сохранения более сложных или больших объемов данных следует использовать другие механизмы, такие как Room Database или DataStore.