当我期望它时,onCompletion没有被调用

HD_*_*use 4 android

我在我的父类中发布了一个MediaPlayer成员变量,在我启动之后,它不会调用onCompletion,或者至少onCompletionListener没有捕获它?我的代码看起来有点效果

mediaPlayer = Mediaplayer.create(this, currentSample);
mediaPlayer.start();
Run Code Online (Sandbox Code Playgroud)

代码中的其他地方是我的onCompletionListener

mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
    public void onCompletion(MediaPlayer mp) {      
        if (repeatFlag == true) {
            handler.removeCallbacks(sampleRunnable);
            handler.postDelayed(sampleRunnable, delay);
        }
    }   
});
Run Code Online (Sandbox Code Playgroud)

我正在使用处理程序来调用sampleRunnable,因为我想以指定的延迟间隔循环它.但是,onCompletion似乎永远不会被调用.我对此非常肯定,因为我在onCompletion中设置了断点,它永远不会暂停程序,我试图单步执行它似乎永远不会被调用.有任何想法吗?

exc*_*n01 5

    mediaPlayer.start();
    mediaPlayer.setOnCompletionListener(new OnCompletionListener() 
    {
        @Override
        public void onCompletion(MediaPlayer arg0) 
        {
            Log.v("Tag", "Completed");
        }
    });
Run Code Online (Sandbox Code Playgroud)

这个片段工作正常.唯一的区别是"@Override",我不确定"@Override"是否对代码产生影响.

  • 为了清楚起见,似乎``setOnCompletionListener()``必须放在``start()``之后.这对我来说并不清楚. (5认同)