setOnCompletion方法为什么有时候会执行两次,有时候一次都不执行?

class OnCompletionListener implements android.media.MediaPlayer.OnCompletionListener {

    @Override
    public void onCompletion(MediaPlayer mp) {
        Log.i("mp3", "服务执行了OnCompletionListener方法");
            statethreadFlag = true;
            mp.stop();
            if (currIndex >= (list.size() - 1)) {
                Toast.makeText(getApplicationContext(), "歌曲全部播放完毕", Toast.LENGTH_LONG).show();
            } else {
                currIndex++;
                start();
            }
    }
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // TODO Auto-generated method stub
    Log.i("mp3", "服务执行了onstartcommand方法");
    player = new MediaPlayer();
    bundle = intent.getBundleExtra("sendListToService");
    list = (ArrayList<HashMap<String, String>>) bundle.getSerializable("arraylist");
    currIndex = bundle.getInt("currIndex");
    start();
    player.setOnCompletionListener(new OnCompletionListener());
    return super.onStartCommand(intent, flags, startId);
}
public void start() {
    Log.i("mp3", "服务执行了start方法,开始播放歌曲");
    if (bundle.getBoolean("flag")) {
        hMap = list.get(currIndex);
        player.reset();
        try {
            player.setDataSource(hMap.get("path"));
            player.prepare();

// Log.i("mp3", "播放器准备完毕");
} catch (Exception e) {
e.printStackTrace();
}
player.start();
serviceFlag = 1;
statethreadFlag = false;

        new Thread(new StateThread()) {
        }.start();
    } else {
    }
}
播放器是写在服务中的,想让播放器在放完一首歌后自动播放下一曲,可是有时候会重复一首或者跳一首和两首歌。找了半天也不知道哪里出了问题。

https://zhidao.baidu.com/question/625793038832994404.html