2013-10-22 104 views
2

如果我需要真正做快速切换的任何事情,我有点困惑。看起来如果我不使用媒体元素,相机和插座,我可以免费获得这种“快速切换”。快速切换Windows Phone(7.8)

我不知道如何测试它。我看到

  1. 点击Windows图标(启动图标)一对夫妇的视频
  2. 点击后退按钮

  1. 按住返回键,直到你在屏幕查看
  2. 转到其他应用程序
  3. 回到您的应用程序。

这些都似乎加载速度又快,但如何。

  1. 最多可以装入应用程序
  2. 命中Windows图标
  3. 点击瓷砖应用

应该快速切换发生在这一点上还是它加载的应用程序在杀死你的旧的新实例?

回答

3

有不同的概念,这里涉及:

-the第一件事就是快速应用恢复它是Windows的一个新功能手机8,你可以启用,这样当你按下应用拼贴它没有重新启动应用程序,但保持相同的实例(默认情况下,它只会杀死应用程序,只是重新创建一个新的实例,就好像应用程序从未打开过)。你可以找到更多关于那个here的信息。

- 第二个概念是快速应用切换和墓碑。您可以找到有关应用程序生命周期here的更多信息。基本上,当你按下Windows按钮或导航到另一个应用程序时,你的应用程序将进入休眠状态。在此状态下,应用程序未运行,但仍在内存中。当你回去时,因为一切都在记忆中,所以一切都应该保持原样。在快速应用切换的情况下处理的主要情况是,当您的应用停用时,所有的网络连接都会被终止,因此您应该确保当您返回时不显示任何Web错误消息对话框,并且您重做任何失败的网络请求。

您的应用程序的第二种可能状态是,应用程序处于休眠状态后,您打开了几个应用程序,并且该设备没有足够的内存,那么它将选择逻辑删除您的应用程序。在该状态下,您的应用程序将从内存中删除,因此您没有保存的任何内容都将丢失。当你回到你的应用程序时,它会回到用户以前的页面并重新创建它。
这意味着处理程序之前,这种情况下,关闭你应该有:

  • 保存您可能没有被路过的导航参数任何上下文特定的数据。
  • 也许保存用户目前正在做的事情(例如,如果他当前正在输入一个长文本,最好保存它以便用户不必从头开始重新输入)
  • 保存当前滚动位置或类似选定项目的东西可能是一个加号

此外,当应用程序恢复时,您必须确保您重新查询所需的所有信息。如果您在主页面的OnNavigatedTo中加载一些数据(例如来自Web服务器),然后仅在详细信息页面上重新使用数据而不重新查询它,则会中断一个示例。如果你在详细信息页面,按开始按钮,然后做一些其他的应用程序tombstonne,当你回到应用程序比数据将无法使用(因为内存已被“清除”和onNavigatedTo的主页没有被调用,因为它会直接导航回到详细页面)。

您可以使用page state and application state来保存正确处理墓碑案例所需的任何信息。基本上有一些字典可以添加一些将被序列化的对象(所以你需要确保你试图保存的任何对象都是可序列化的),当应用程序被停用时会自动进行序列化。

要轻松测试Tombtonning案例,您可以在项目属性中的Debug选项卡中选中复选框“在调试时取消激活时为Tombstone”。像这样,当你调试并按下windows按钮或转到另一个应用程序时,它总是会将应用程序划掉。要检查它是否真的是墓碑,当您返回时,您应该会看到您的应用程序显示了几秒钟的恢复屏幕(而在墓碑案中,它几乎是瞬间的)。

0

所以这有点令人困惑。我永远花了我的时间来弄清楚他们真正的意思。

什么快速切换参考是更复杂的应用程序。利用某些需要保存状态的应用程序。

例如,如果您要创建导航应用程序。您正在浏览,然后离开应用程序。当你回到那个应用程序时,它应该显示“恢复...”指示器,然后将你的应用程序恢复到之前的状态。

这里是FAS

频道9视频

http://channel9.msdn.com/events/MIX/MIX11/DVC09

而且,这里是关于MSDN文章吧

http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff967547(v=vs.105).aspx

0

应该快速切换,在这一点上发生或者它加载你的应用程序的新实例,以杀死你的旧的?

在这种情况下,您的新实例将启动。

其实,它有点混乱,但不是那么多。

  • 应用程序可以关闭(通过Windows键或按BAck键一段时间)或退出(通过按主菜单中的返回键)。接下来,应用程序进入休眠状态,它将所有内容保存在内存中。 ApplicationDeactivated会上升。
  • 因此,如果您只是重新激活它(通过按Back(后退)并选择您的应用程序,或者只按Back(后退),如果堆栈中没有其他东西),它将被恢复。 ApplicationActivated事件将会随着e.IsApplicationInstancePreserved = true而上升
  • 如果您要使用很多其他应用程序(设备将耗尽内存),则您的应用程序将进入墓碑状态。然后,您需要恢复所有数据。 e.IsApplicationInstancePreserved将为false。
  • 如果您要重新启动应用程序(通过单击平铺),将启动新实例,并且ApplicationLaunching将会升高。
+0

这正是FAS设计用于防止的原因。 –

+0

例如打开诺基亚在这里驱动器,然后选择一个位置,然后开始导航。现在点击主页按钮。现在点击平铺并打开应用程序。诺基亚在这里驱动器不重新启动。它使用墓碑状态FAS或快速应用程序切换回你的应用 –

+0

啊,好的,对不起,它的wp8功能我只用wp7 –

0

作为开发人员,快速切换并不是真正令您担心的事情。您需要担心的是“墓碑式” - 当有人从您的应用程序切换开始时,您需要保存状态:当用户切换回它时,作为开发人员必须假定您的应用程序实际上是从头开始重新启动的并需要重新加载保存状态。这是Application_LaunchingApplication_Activated(用户从开始屏幕重新开始您的应用程序,而应用程序被暂停,现在正在恢复,但从头开始)之间的差异。

在早些时候,这是应用程序切换工作的唯一方式。快速应用程序切换稍后添加,只是简单地更改了合同,以便有时您的应用程序可以在没有被逻辑删除的情况下继续执行。它取决于内存等,但这对用户来说只是一个好处,在很多情况下,用户不再需要等待应用程序重新加载其逻辑状态。作为开发者,你仍然不得不假定你会被斩首。

+0

好的,在我想要特别说明的挑战中的一些要求必须具有“快速切换”,但是在我的研究之后,它似乎是自动的,所以我感到困惑。在墓碑式的情况下,您如何处理多个页面(用户可能处于第5页,并且状态需要恢复,另一个页面可能在第2页并需要恢复)。一切都是用这种方法处理的吗?另外如果你使用MVVM如何工作(这可能是一个单独的问题)。 – chobo2

+0

操作系统将重新加载用户停止的任何页面。如果他们离开时,应用程序将在第5页加载。有关详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff967548.aspx –

+0

即使它被砸死,它也会立即加载构造函数? – chobo2