嗨,我是 Android 编程的新手,我在构建媒体播放器应用程序时几乎不需要帮助,我在其中使用搜索栏来更新进度,如下所示:
Handler handler = new Handler();
paly.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
s_player.start();
p_bar.run();
}
});
Runnable p_bar = new Runnable() {
@Override
public void run() {
start_time = s_player.getCurrentPosition();
s_bar.setProgress((int) start_time);
handler.postDelayed(p_bar, 100);
}
};
所以这段代码在 100 毫秒后更新了 sekkbar,但是歌曲播放不流畅???
最佳答案
我在这里发现了一个错误,它可能与问题有关,也可能无关。
Runnable p_bar = new Runnable() {
@Override
public void run() {
start_time = s_player.getCurrentPosition();
s_bar.setProgress((int) start_time);
handler.postDelayed(p_bar, 100);
}
};
在 p_bar 中,您在 run() 方法中调用 postDelayed
,而 postDelay()
会将可运行对象添加到 MessageQueue,而 run()当在队列中到达此 Runnable 对象时,系统将调用 Runnable 的方法。
所以就像一个循环,你可以运行,postDelay会调用run(),run()会调用postDelay()....
所以请不要在run方法中调用postDelay()。
关于Android handler.postDelayed 正在阻止我的媒体播放器顺利播放歌曲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34482052/