我在Windows Phone 7应用程序中使用BackgroundAudioPlayer
代理。当跟踪结束时,代理端接收TrackEnded
事件,但UI端不接收任何事件。
此外,当我故意将音轨的位置设置为结束时,然后调用Play()
,代理端收到TrackEnded
事件(因为音轨已经结束),但是UI side在其Stopped
处理程序中收到PlayStateChanged
。太奇怪了!
如何让UI知道曲目已经结束?通过隔离存储进行通信不是我的最爱!
答案 0 :(得分: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的命名事件)......