如果我真的需要做任何事情来实现快速切换,我有点困惑。似乎如果我不使用媒体元素、相机和 socket ,我就可以免费获得这种“快速切换”。
我不知道如何测试它。我看到几个视频
- 点击 Windows 图标(开始图标)
- 点击后退按钮
或
- 按住后退按钮直至出现屏幕 View
- 转到其他应用
- 返回您的应用。
这两个似乎都加载得很快,但是如果呢。
- 加载应用
- 点击 Windows 图标
- 点击图 block 应用
此时应该进行快速切换,还是会加载应用程序的新实例并杀死旧实例?
最佳答案
这里涉及到不同的概念:
- 第一件事是快速应用程序恢复,这是 Windows Phone 8 的一项新功能,您可以启用它,这样当您按下应用程序磁贴时,它不会重新启动您的应用程序,而是保留相同的实例(默认情况下,它只会杀死该应用程序并重新创建一个新实例,就像该应用程序从未打开过一样)。您可以找到更多相关信息 here .
-第二个概念是快速应用程序切换和逻辑删除。您可以找到有关应用程序生命周期的更多信息here 。基本上,当您按下 Windows 按钮或导航到另一个应用程序时,您的应用程序将进入休眠状态。在此状态下,应用程序未运行,但仍在内存中。当你回去时,因为一切都还在内存中,所以一切都应该像被遗忘的那样。快速应用程序切换时要处理的主要情况是,当您的应用程序停用时,所有网络连接都会被终止,因此您应该确保当您返回时不会显示任何网络错误消息对话框,并且您需要重做任何失败的网络请求。
应用程序的第二种可能的状态是,应用程序处于休眠状态后,您打开了几个应用程序,并且设备没有足够的内存,然后它会选择逻辑删除您的应用程序。在这种状态下,您的应用程序将从内存中删除,因此您未保存的任何内容都将丢失。当您返回应用程序时,它将返回到用户之前所在的页面并重新创建它。
这意味着要在应用程序停用之前处理这种情况,您应该:
- 保存您可能未通过导航参数传递的任何上下文特定数据。
- 也许保存用户当前正在执行的操作(例如,如果他当前正在输入长文本,则最好保存它,以便用户不必从头开始重新输入)
- 保存当前滚动位置或所选项目之类的内容可能会更好
此外,当应用程序恢复时,您必须确保重新查询所需的所有信息。一个可能会中断的示例是,如果您在主页的 OnNavieratedTo 中加载一些数据(例如从 Web 服务器),然后仅重用详细信息页面上的数据而不重新查询它。如果您在详细信息页面上按开始按钮,然后执行其他操作和应用程序墓碑,当您返回应用程序时,数据将不可用(因为内存已被“清除”并且主页的 onNavigateTo不会被调用,因为它将直接导航回详细信息页面)。
您可以使用page state and application state保存正确处理墓碑案件所需的任何信息。基本上,您可以在字典中添加一些将在应用程序停用时自动序列化的对象(因此您需要确保您尝试保存的任何对象都是可序列化的)。
要轻松测试墓碑化情况,您可以在项目属性中的“调试”选项卡中选中“调试时停用时墓碑”复选框。像这样,当您调试并按下 Windows 按钮或转到另一个应用程序时,它总是会删除该应用程序。要检查它是否真的是墓碑化,当您返回时,您应该会看到您的应用程序显示恢复屏幕几秒钟(而在墓碑化情况下,它几乎是瞬时的。
关于windows-phone-7 - 快速切换Windows Phone(7.8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19523359/