在Handler中替换回调

时间:2015-02-07 15:18:59

标签: java android callback handler android-mediaplayer

我遇到了以下问题。我有MediaPlayer,我使用Handler在播放期间发送有关MediaPlayer进度的消息。我希望能够在运行时更改Handler的回调。当我在MediaPlayer中更改播放文件时,我使用以下代码:

player.setDataSource(filename);
player.prepare();
final int duration = player.getDuration();
player.start();
// removing previous callback
durationHandler.removeCallbacksAndMessages(null); 
// setting new callback
durationHandler.postDelayed(
    new Runnable() {
        @Override
        public void run() {     
            int progress = player.getCurrentPosition();
            demonstrator.setProgress(progress, duration);           
            durationHandler.postDelayed(this, REPEAT_TIME);         
        }       
    }, 400);    

我希望旧的回调将被新的回调取代。但它不起作用!两个回调都在运行!为什么?我怎么能避免它呢?

0 个答案:

没有答案