2

BackgroundAudioPlayer在我的 Windows Phone 7 应用程序中使用代理。当track结束时,agent端接收到TrackEndedevent,而UI端没有接收到任何event。

另外,当我故意将音轨的位置设置为它的末尾,然后调用Play()时,代理端接收TrackEnded事件(因为轨道已经结束),但 UI 端确实Stopped在其PlayStateChanged处理程序中接收。太奇怪了 !

如何让 UI 知道一首曲目已经结束?通过隔离存储进行通信不是我的最爱!

4

1 回答 1

1

通过研究和一些测试,使用独立存储作为后台和前台实例之间的中间人BackgroundAudioPlayer仍然是 Windows Phone 7 的唯一途径。这里提到了这些选项(我知道你知道)......

http://blogs.msdn.com/b/wpukcoe/archive/2012/02/10/background-audio-in-windows-phone-7-5-part-2.aspx

http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202944(v=vs.105).aspx

https://stackoverflow.com/a/11419680/247257

Peter Torr 也证实了这一点,他说:

例如,代理可能需要告诉前台“我刚刚开始预下载下一首曲目”或“我更新了数据库表,你应该刷新你的状态”。Windows Phone OS 7.1 无法创建此类通知;充其量您可以使用轮询技术对它们进行建模,但是这种方法效率低下并且容易出错。

唯一的好消息是,在同一篇文章中,他为 Windows Phone 8 提供了一个更可靠的解决方案(使用 IPC 的命名事件)......

http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/27/using-named-events-to-coordinate-foreground-apps-and-background-agents.aspx

于 2013-03-29T00:57:25.247 回答