我花了很多时间来解决这个问题:
当MediaPlayer第一次被加载和启动时,它的OnCompletion会被调用。这是一个问题,因为我有一些代码,当上一首歌曲播放完毕时,它会跳到下一首。
我通过在OnCompletion监听器中使用一个flag来解决了这个问题,但为什么会这样呢?
以下代码片段是我服务中play()方法的一部分:
mp.setDataSource(mCurrentMediaFile);
mp.prepare();
mDuration = mp.getDuration();
int seek = mDuration * position / 1000;
mp.seekTo(seek);
mp.start();
由于某种原因,在从play()方法返回后,即使它是服务创建后播放的第一首曲目,onCompletion也会被调用。