Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Как работает надгробие в MVVMcross


Как работает надгробие в MVVMcross


Загромождение в MVVMcross относится к процессу сохранения и восстановления состояния ViewModel, когда приложение приостановлено или прекращено из -за низких условий памяти, общего сценария на мобильных платформах, таких как Windows Phone и Android. MVVMcross предоставляет механизмы для эффективной обработки этого процесса.

Строительство и жизненный цикл

MVVMcross ViewModels создаются с использованием контейнера IOC, который вводит зависимости в ViewModel. Жизненный цикл ViewModel в MVVMcross включает в себя несколько ключевых методов:

- Строительство: ViewModel создается с зависимостями, введенными через контейнер IOC.
- init (): инициализирует ViewModel с параметрами навигации.
- ReloadState (): восстанавливает состояние ViewModel после надгробия.
- start (): вызывается, когда инициализация и регидрация завершены [3].

Сохранение сохранения

Когда приложение загрязнено, MVVMcross вызывает метод «savestateTobundle» на ViewModel. Этот метод позволяет сохранить состояние вашего ViewModel, сохранив данные в `imvxbundle '. Желательно использовать сериализацию JSON для хранения сложных данных [1].

восстановление состояния

После того, как приложение будет реактивировано, MVVMcross пытается восстановить состояние ViewModel. Однако точный метод восстановления состояния может варьироваться в зависимости от платформы и версии MVVMcross. В целом, метод «Reloadstate» используется для регидратации ViewModel с сохраненным состоянием [3].

Соображения, специфичные для платформы

Каждая платформа, поддерживаемая MVVMcross, по -разному обрабатывает надгробие:

- Windows Phone: Tombstoning обрабатывается через события страниц, такие как `onnavigatedto` и` onnavigatedfrom`. MVVMcross предоставляет механизмы для сохранения и восстановления состояния во время этих событий, но это может потребовать дополнительной настройки для обеспечения надлежащего восстановления состояния [4] [5].
- Android: MVVMcross обрабатывает надгробие, сохраняя и восстанавливая состояние ViewModel, когда приложение приостановлено или возобновлено. Тем не менее, проблемы могут возникнуть, если обратный удар очищен или если параметры навигации не сохранены должным образом [6].

Проблемы и решения

Обработка надгробия в MVVMcross может быть сложной задачей, особенно при навигации с параметрами. Крайне важно сохранить параметры навигации вместе с состоянием ViewModel, чтобы обеспечить правильное восстановление состояния приложения [6] [9]. Кроме того, использование вспомогательных библиотек или пользовательских решений может упростить процесс сохранения и восстановления состояния на разных платформах [5] [8].

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

Цитаты:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://www.mvvmcross.com/mvvmcross-51-release/
[3] https://stackoverflow.com/questions/29372480/mvvmcross-viewmodel-life-cycle
[4] https://stackoverflow.com/questions/16023307/mvvmcross-and-tombstoning
[5] https://www.kenneth-truyers.net/2013/03/13/tombstoning-made-easy-in-windows-phone-mvvm/
[6] https://github.com/mvvmcross/mvvmcross/issues/834
[7] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md
[8] https://jesseliberty.com/2011/04/08/tombstoning-and-mvvm/
[9] https://github.com/mvvmcross/mvvmcross/issues/2458
[10] https://www.mvvmcross.com/mvvmcross-56-release/