c# - 当应用程序在 WP 8.1 商店应用程序中恢复时,应用程序恢复事件不会触发

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

我的 WP 8.1 商店应用程序行为异常。当我快速离开然后返回时,App Resuming 事件按预期触发。但是,如果我将应用程序保留在后台一段时间,当返回时,该应用程序会触发 Constructor 和 OnNavigatedTo 事件,而不是 Resuming 事件,并且黑色的“正在恢复...”屏幕会持续几秒钟(大约 4 秒) .This 是一个带有 BackgroundAudio 任务的应用程序。即使是来自 MS 的示例 BackgroundAudio 应用程序也是如此。有人知道这里出了什么问题吗?

最佳答案

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

如果您看到“Resuming...”几秒钟,那么这可能意味着您的应用程序在先暂停后被操作系统终止。在这种情况下,Resuming 事件不会触发,因为您的应用已完全终止并且必须重新启动。 “恢复”通常是指暂停(未终止)的应用恢复执行。

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

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

App Resuming event fires as expected when I quickly navigate away and then come back.

这是正确的行为。应用程序在被操作系统挂起之前进入后台后需要几秒钟的时间,因此如果您在操作系统挂起它之前恢复应用程序,那么它只会从内存中恢复。

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


仅供引用,这是来自 MSDN 的应用程序生命周期图(我建议您阅读此页面以了解有关应用程序生命周期的更多信息):

Application lifecycle

“Resuming”只发生在从挂起状态到运行状态。

关于c# - 当应用程序在 WP 8.1 商店应用程序中恢复时,应用程序恢复事件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26794400/

相关文章:

c# - 将 C# 接口(interface)/类传递给 F#

windows-phone-8 - 如何更改广告网络(在我的 Windows Phone 开发中心)关联的 pubCenter 帐号

c# - Windows Phone 8.1后台任务突然退出

jquery - 如何在silverlight windows Phone sdk中实现流畅的页面导航。如下图所示

c# - 错误 : await requires that the type have a suitable GetAwaiter method

camera - Windows Phone 8.1 MediaCapture CapturePhotoToStorageFileAsync 内存泄漏

c# - SetForegroundWindow 在 Windows Server 2008 上失败

c# - rpc\\literal SOAP 不支持 namespace 。包装器元素必须是不合格的

c# - Windows 8.1 Bing map 控件

xaml - RenderTransform 在 TextBlock 上的 EntranceThemeTransition 之后发生