Нужен ли нам onSaveInstanceState (), когда у нас есть ViewModels? - PullRequest
1 голос
/ 07 мая 2020

Теперь с моделью View, так как мы можем обрабатывать изменения конфигурации и управлять данными пользовательского интерфейса, поэтому теперь я чувствую, что onSaveInstance () бесполезен для меня. onSaveInstanceState () и использовался для его восстановления во время конфигурации, теперь, используя модель представления, мы можем легко получить обновленные данные. Итак, не могли бы вы рассказать мне, каково фактическое использование onSaveInstanceState () и onRestoreInstancestate () , если мы используем ViewModel.

Не могли бы вы рассказать мне об использовании его в текущем случае с ViewModel

1 Ответ

2 голосов
/ 07 мая 2020

Данные все еще могут быть потеряны, когда Android ОС решает убить процесс вашего приложения из-за ограничений памяти, а затем повторно создать его. Это отличается от изменений конфигурации.

ViewModel успешно сохраняет ваши данные после изменения конфигурации (Activity / Fragment Recreation), но это не очень поможет в случае Process Recreation.

Чтобы сохранить данные даже в случае восстановления процесса, вам нужно будет использовать onSaveInstanceState().

Последние обновления позволяют сохранять состояние экземпляра непосредственно в ViewModel, которое сохранится в процессе отдых с использованием SavedStateHandle, т.е. вам не нужно искать onSaveInstanceState из Activity/Fragment для сохранения данных, просто используйте SavedStateHandle в своем ViewModel, он будет действовать так же.

Пожалуйста, обратитесь к этим дополнительным ресурсам для большей ясности. ссылка1 ссылка2

...