应用程序在WP 8.1商店应用程序中恢复时,应用程序恢复事件未触发

时间:2014-11-07 05:02:28

标签: c# windows-runtime windows-phone windows-store-apps windows-phone-8.1

我的WP 8.1商店应用程序表现得非常奇怪。当我快速离开然后回来时,应用程序恢复事件会按预期触发。但是,如果我将应用程序保留在后台一段时间并且何时返回,应用程序将触发Constructor和OnNavigatedTo事件而不是Resuming事件,并且黑色“Resuming ...”屏幕持续几秒钟(约4秒)这是一个带有BackgroundAudio任务的应用程序。甚至来自MS的示例BackgroundAudio应用也表现得像这样。谁知道这里有什么问题?

2 个答案:

答案 0 :(得分:5)

我正在构建使用背景音频任务的WP 8.1应用程序。你解释的一切也发生在我身上。

如果你看到"正在恢复......"几秒钟后,这可能意味着您的应用程序在被暂停后首先被操作系统终止。在这种情况下,Resuming事件不会被激活,因为您的应用程序已被完全杀死,必须重新开始。 "恢复"通常意味着暂停(未终止)的应用程序恢复执行。

当您的应用终止后,然后"恢复"在应用切换器中,Application.OnLaunched()方法覆盖将使用e.PreviousExecutionState == ApplicationExecutionState.Terminated调用。在此方法中,您应检查先前的执行状态是否已终止,如果是,则将应用程序恢复到暂停之前的状态。这给用户一种错觉,即应用程序永远不会被终止,并且他们可以恢复他们当时正在做的事情。

如果您创建一个新的Pivot App Windows Phone 8.1项目(例如),您将在App.xaml.cs中看到应用程序生命周期事件得到正确处理。

  

应用程序恢复事件会在我快速离开然后返回时按预期触发。

这是正确的行为。应用程序在被操作系统暂停之前需要几秒钟,因此如果您在操作系统暂停之前恢复应用程序,那么它将从内存中恢复。

我不确定为什么背景音频应用更容易被终止。我甚至发现Xbox Music应用程序的行为与此类似。希望在下一版本的Windows Phone中,这个问题将得到解决。


FYI这里是MSDN的应用程序生命周期图(我建议您阅读此页面以获取有关应用程序生命周期的更多信息):

Application lifecycle

"恢复"只发生从暂停状态到运行状态。

答案 1 :(得分:1)

每当应用程序从后台恢复时。可以有两种状态:

  1. 已暂停:已成功恢复,直接导航至OnNavigatedTo;不会调用构造函数
  2. 终止:应用程序不会从您离开的页面的上一个状态开始,而是会重新加载该页面;此时您需要在应用程序暂停时保存状态,以便立即恢复