我正在使用MediaPlayer编写一个音频播放器,允许用户跳过实际曲调.跳过请求可能随时发生,包括在调用MediaPlayer.prepareAsync和即将发生的onPrepared回调之间.医生说:
重要的是要注意,准备状态是暂时状态,并且在MediaPlayer对象处于准备状态时调用任何具有副作用的方法的行为是未定义的.
这包括调用重置,甚至释放吗?因为如果是这样,那么我要么必须等待onPrepared回调重用MediaPlayer或分配一个全新的MediaPlayer如果我不想等待并在onPrepared回调上发布过时的那个,对吧?
小智 5
我还建立了一个流音乐播放器并与准备状态斗争.最糟糕的部分是有一些流,其中prepare()永远下载(缓冲)数据,而不会调用onBufferUpdate.呼叫释放没有做任何事情.所以,我这样做的方式是在15秒后从被驱动的MediaPlayer上调用reset(),尽管文档中有建议.这导致它抛出异常并使其进入错误状态.捕获异常后我调用了release().这似乎解决了这个问题.我希望这对某人有用.
在我看来,我将遵循文档中的建议,我发现不同设备中的播放器存在几个问题(在某些设备中,重复使用同一播放器根本不稳定)。
我认为一个不错的选择是分配播放器,并在用户跳过一首曲子时在它们之间切换,然后等待原始播放器到达准备状态,然后安全地重置它。
| 归档时间: |
|
| 查看次数: |
4421 次 |
| 最近记录: |