P.Berol._inv._9875_col._v_coronis

Эта часть документации была удалена впоследствии с оф.сайта.

Сравнение ViewModel и SavedInstanceState

Объекты ViewModel обеспечивают удобный способ хранения данных при изменении конфигурации, но они не сохраняются, если операционная система завершает работу приложения.

Например, если пользователь покидает приложение и возвращается через несколько часов, процесс завершается к тому времени, и система восстанавливает активность из сохраненного состояния. Все контроллеры пользовательского интерфейса, такие как представления, действия и фрагменты, сохраняют свое состояние, используя механизм сохранения состояния экземпляра, поэтому большую часть времени вам не нужно ничего делать. Вы также можете сохранить пользовательские данные в этом комплекте, используя обратный вызов onSaveInstanceState().

onSaveInstanceState() предназначен для хранения небольших объемов данных, необходимых для простой перезагрузки состояния активности, если контроллер пользовательского интерфейса остановлен и воссоздан системой. onSaveInstanceState() не предназначен для управления сложными структурами данных, для которых требуется длительная сериализация или десериализация. Вместо хранения сложных объектов с помощью onSaveInstanceState() убедитесь, что вы храните сложные объекты в локальном постоянном хранилище и сохраняете уникальный идентификатор для этих объектов, используя onSaveInstanceState().

Например, если у вас есть пользовательский интерфейс, который показывает информацию о стране, убедитесь, что вы никогда не помещали объект Country в saved instance state. Вы можете поместить countryId в saved state, если оно уже не сохранено представлением или аргументами фрагмента. Убедитесь, что вы храните актуальный объект в базе данных и используете ViewModel для его получения с помощью сохраненного countryId.

Объекты ViewModel не являются заменой onSaveInstanceState(), потому что они только выживают, связанные с изменением конфигурации. Объекты ViewModel не сохраняются после того, как система останавливает процесс приложения. Чтобы эффективно сохранять и восстанавливать состояние пользовательского интерфейса вашего приложения:

  • Используйте локальное постоянное хранилище для хранения сложных данных, таких как база данных, реализованная с использованием Room Persistence Library.
  • Используйте onSaveInstanceState() для хранения уникальных идентификаторов для этих сложных данных.
  • Используйте ViewModel для хранения сложных данных в памяти после загрузки из локального постоянного хранилища.

 

Читать ещё :   Руководство по архитектуре приложений. Часть 1

Читать еще