【问题标题】:App Resuming event not firing when the app is resumed in WP 8.1 store app在 WP 8.1 商店应用程序中恢复应用程序时未触发应用程序恢复事件
【发布时间】:2014-11-07 05:02:28
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    当我快速离开然后返回时,App Resuming 事件会按预期触发。

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

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


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

    “恢复”只发生在挂起状态到运行状态。

    【讨论】:

    • 这正是发生的事情。感谢您的解释。
    • 你知道如何防止这种行为或任何原因吗? @十年月亮
    【解决方案2】:

    每当应用从后台恢复时。它可以处于两种状态:

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

    【讨论】:

      猜你喜欢
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多