我可能对您的问题的某个方面阅读过多,但是如果应用程序在暂停时实际终止,则SuspensionManager
and的作用SessionState
是存储足够的信息以将您的应用程序带回用户离开它的位置。
在Windows 8 应用程序生命周期中,如果另一个应用程序出现在前台,您的应用程序将被“暂停”。当您的应用程序暂停时,其所有状态都保留在内存中,如果重新激活(您翻转回它),一切*都会“免费”恢复。
但是,暂停的应用程序也可能被操作系统终止(例如内存压力的 b/c),并且没有机会在您的应用程序中对这种情况做出反应,因此您真正要做的SessionState
是存储必要的内容如果应用程序实际终止,则“重新创建”用户所在的最后一个位置。它本质上是一份保险单:如果应用程序只是暂停,SessionState
则不是真正需要的。
“什么是必要的”是灰色区域,我可以存储有关正在进行的用户配置文件的所有信息,或者我可以只保存索引到所有用户配置文件数据的持久存储中的用户 ID。我通常有更多的极简主义观点,并且会尽可能少地保留SessionState
- 我打个比方,我不需要记住所有内容,我只需要记住如何/从哪里获取/找到所有内容。
您的问题也暗示您SessionState
用于在应用程序的页面之间传递信息,而这并不是真正的意图。应用程序的每个页面通常都与视图模型相关联,当您与该应用程序的页面交互时,您将更新视图模型并通过视图模型中已有的更改驱动额外的屏幕和体验。离开你的应用程序的一个屏幕并返回主屏幕也意味着你已经保存了你收集的任何信息 - 当然是视图模型,但也保存到数据库或本地存储等持久化的东西。当您重新访问该页面时,您会将数据从视图模型(或该持久存储)中拉回;主页不需要这些信息,为什么还要坚持呢?
最后,由于您提到是 WinRT 新手,您可能需要查看App Builder,它以可消耗的块的形式汇集了许多资源,以引导您在 30 天内构建应用程序(尽管所有材料都可用,所以你可以以任何你想要的速度消费:)) 与你的问题密切相关的生命周期管理的讨论出现在该序列的第 17 天。
*“一切都免费恢复”并不一定意味着当应用程序退出暂停状态时您没有任何工作要做。可能存在需要刷新的陈旧数据,并且可能需要刷新/重新创建连接或其他临时或短期实体。