Middle
209
Comment sauvegarder l'état de ViewModel dans les composants architecturaux d'Android?
Réponse de l'IA
sobes.tech IA
Для сохранения состояния 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.