我遇到了以下问题。我有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);
我希望旧的回调将被新的回调取代。但它不起作用!两个回调都在运行!为什么?我怎么能避免它呢?