首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时保存墓碑处理申请的状态?

何时保存墓碑处理申请的状态?
EN

Stack Overflow用户
提问于 2011-01-07 10:33:23
回答 4查看 960关注 0票数 3

我想知道什么时候更适合保存单个页面的视图模型。

我认为有两种可能性:

  1. 每次从页中保存每个页面的状态(它是视图模型),这样,如果应用程序在tombstoning过程中被终止和重新激活,它就已经被保存了
  2. 在应用程序停用事件中,遍历导航堆栈中的所有页面并保存它们的状态(它们的视图模型),然后将其重新注入到应用程序激活事件中。

正确的处理方法是哪一种?

西蒙尼

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-07 11:20:44

不幸的是,保存状态的“最佳”时间将取决于:应用程序;每个页面使用的模型的复杂性;每个页面支持的交互;以及页面之间共享的模型的复杂性(在应用程序级别)。

作为一般规则,我尝试在应用程序级别上拥有一个单一的模型,并在激活/失活时保持这个模型。页面的模型是对应用程序级模型的一部分的引用,而我只将页面特定的导航信息从/保存到页面。

我坚持的页面特定信息的例子是:输入但未保存的数据;以及滚动位置。

票数 2
EN

Stack Overflow用户

发布于 2011-01-07 10:43:30

我认为这取决于您的需要,但您不太可能需要偏离文档,这意味着应用程序停用事件是保存持久性和瞬态(状态)数据的适当位置,而close应该只保存持久数据。执行模型概述 (见激活下的控制流程图)

这篇文章还以应用生命周期和墓碑处理为例,给出了一个很好的解释,区分了后退/关闭、失活和墓碑化。

您无法预测用户何时会在页面更改之间更改前台应用程序。但是,您可以预测关闭或停用时会发生什么。因此,在视图之间保存页面状态似乎是多余的。

票数 3
EN

Stack Overflow用户

发布于 2011-01-07 11:15:36

因为我没有足够的“声誉”,所以我不能对前面的答案投赞成票,但是是的,任何瞬态信息都应该持久化在Application.Deactivated事件中,然后在Application.Activated事件中恢复,以获得对墓碑状的支持。

如果您需要在应用程序会话之间存储任何内容,那么您可以使用Application.Closing事件,但是根据您需要存储的内容,您可以只在它更改时存储它。同样,根据您需要存储的内容,您可以在Application.Launching事件中还原它,或者在需要时只读取它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4624603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档