Xbox 应用程序在后台运行时没有足够的时间停止视频播放器

问题描述

我开发的视频流应用遇到了一个令人困惑的问题。它是一个 UWP/PWA (JavaScript) 应用程序,运行 Web 内容并使用 HTML5 视频播放器和我们从第三方获得的流媒体管理器。每次将应用程序置于后台(即用户导航到 XBox 主屏幕)时,都会发生一个错误,该错误似乎与流管理器在进入挂起状态后调用某种 Edge 媒体扩展方法有关。作为后台事件发生时流程的一部分,我们调用一个异步方法来停止视频播放。

经过一番研究后,我发现了一个让我感到乐观的应用许可。鉴于我怀疑该问题与异步停止方法的完成速度不够快有关,我认为在应用清单中勾选“后台媒体播放”可能会解决该问题。毕竟,该说明旨在让媒体即使在后台运行后也能继续运行:

backgroundmediaplayback 功能改变了 媒体特定的 API,如 MediaPlayer 和 AudioGraph 类 在您的应用程序处于后台时启用媒体播放。全部活跃 音频流将不再静音,但仍可听到 当应用程序过渡到后台时。此外,应用程序生命周期 播放时会自动延长。 https://docs.microsoft.com/en-us/windows/uwp/packaging/app-capability-declarations

果然,将此权限应用到应用后错误消失了。然而,我很快注意到它有副作用。

一个副作用是,即使将应用程序置于后台后,我仍能听到音频继续播放,但我预料到了这一点,因为该权限最常用于 Pandora 等应用程序,其中继续播放音频是需要的功能。在调用停止方法之前轻松修复播放器静音。

结果证明第二个副作用是阻滞剂。我注意到,在后台大约 6 秒后,XBox 总是会终止应用程序。我很困惑,认为我以某种方式引入了运行时错误,但即使附加了 Visual Studio 调试器,我也无法检测到任何错误。经过进一步研究,我发现我使用的权限存在一些限制。

  1. 应用不能使用超过 125 MB 的内存
  2. 必须允许媒体播放继续

似乎发生的情况是,一旦应用停止播放,XBox 就会确定是时候终止应用,而不是像通常那样将其置于挂起状态。

我似乎无法找到解决此问题的方法。为了解决这个错误,我需要以某种方式给 async stop 方法足够的时间来做它需要做的事情,但我不想牺牲应用程序进入暂停状态的能力。

以某种方式告诉平台在异步操作完成之前暂停应用程序会很好,但我尝试过的其他所有事情(例如:请求扩展执行)都是垃圾。我需要做的事情看起来很简单,但事实证明,这个错误非常顽固。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...