我想知道什么时候更适合保存单页的视图模型。
我看到两种可能性:
- 每次从它导航时保存每个页面的状态(它是视图模型),以便如果应用程序在墓碑过程中恰好终止并重新激活,它已经被保存
- 在应用程序停用事件中,遍历导航堆栈中的所有页面并保存它们的状态(它们的视图模型),然后在应用程序激活事件中重新注入它。
正确的处理方法是什么?
谢谢西蒙妮
我想知道什么时候更适合保存单页的视图模型。
我看到两种可能性:
正确的处理方法是什么?
谢谢西蒙妮
不幸的是,保存状态的“最佳”时间取决于:应用程序;每个页面使用的模型的复杂性;每个页面支持的交互;以及页面之间共享模型的复杂性(在应用程序级别)。
作为一般规则,我尝试在应用程序级别拥有一个模型,并在激活/停用时保持该模型。页面模型是对应用程序级别模型的一部分的引用,我只保留有关从/到页面导航的页面特定信息。
我坚持的页面特定信息的示例是:已输入但未保存的数据;和滚动位置。
我不能投票赞成前一个答案,因为我没有足够的“声誉”,但是任何瞬态信息都应该保留在 Application.Deactivated 事件中,然后在 Application.Activated 事件中恢复以支持墓碑。
如果您需要在应用程序会话之间存储任何内容,那么您可以使用 Application.Closing 事件,但根据您需要存储的内容,您可以在它更改时存储它。同样,根据您需要存储的内容,您可以在 Application.Launching 事件中恢复它,或者在需要时读取它。
这也是我考虑过的。
我已经概括了我对它的看法。
尽早保存。
这意味着,在没有任何其他必要条件促使您推迟保存的情况下,尽早进行保存。您可以直接保存到您的主存储,或者您可以保存到专门用于处理墓碑的瞬态状态。您可以在页面打开时在后台保存。当用户请求在页面之间导航时,您可以保存。
在可能发生意外情况的情况下,例如断电、需要用户注意的异常(如果停用,请注意没有时间),提早保存可为用户提供更多的可靠性。
可能会促使您推迟储蓄的命令可能包括