我的WP 8.1商店应用程序表现得非常奇怪。当我快速离开然后回来时,应用程序恢复事件会按预期触发。但是,如果我将应用程序保留在后台一段时间并且何时返回,应用程序将触发Constructor和OnNavigatedTo事件而不是Resuming事件,并且黑色“Resuming ...”屏幕持续几秒钟(约4秒)这是一个带有BackgroundAudio任务的应用程序。甚至来自MS的示例BackgroundAudio应用也表现得像这样。谁知道这里有什么问题?
答案 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的应用程序生命周期图(我建议您阅读此页面以获取有关应用程序生命周期的更多信息):
"恢复"只发生从暂停状态到运行状态。
答案 1 :(得分:1)
每当应用程序从后台恢复时。可以有两种状态:
OnNavigatedTo
;不会调用构造函数