Middle
208
Come salvare lo stato di ViewModel nei componenti architetturali di Android?
Risposta dell'AI
sobes.tech AI
Для сохранения состояния 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.