Назад к вопросам
Middle
87
questionbank
Как сохранить состояние ViewModel в архитектурных компонентах Android?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
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.