Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Tombstoning如何在mvvmcross中起作用


Tombstoning如何在mvvmcross中起作用


MVVMCROSS中的Tombstoning是指当应用程序暂停或终止视图模式的过程,这是由于记忆条件暂停或终止,这是Windows Phone和Android等移动平台中的常见情况。 MVVMCross提供了有效处理此过程的机制。

###建筑和生命周期

MVVMCross ViewModels是使用IOC容器实例化的,该容器将依赖项注入ViewModel。 MVVMCROSS中ViewModel的生命周期包括几种关键方法:

- 构造:ViewModel是由通过IOC容器注入的依赖项创建的。
-INIT():使用导航参数初始化Vionemodel。
- reloadstate():墓碑后恢复ViewModel的状态。
- start():初始化和补液完成时调用[3]。

###保存状态

当应用程序被墓碑时,MVVMCross在ViewModel上调用“ SavestateTobundle”方法。此方法使您可以通过将数据存储在`iMvxBundle''中来保存视图模型的状态。建议使用JSON序列化存储复杂的数据[1]。

###还原状态

重新激活应用程序后,MVVMCross尝试恢复ViewModel的状态。但是,恢复状态的确切方法可以根据MVVMCross的平台和版本而有所不同。通常,使用“重新adState”方法用于用保存状态来补充视图模型[3]。

###特定于平台的注意事项

MVVMCross支持的每个平台都以不同的方式处理墓碑:

- Windows Phone:通过页面事件来处理墓碑,例如``navigatedto''和`navigated from''。 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-made-made-easy-in-windows-phone-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/