您好,我是 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);
}
};
所以这段代码在100ms后更新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 中你调用的是postDelayed
在 run() 方法中,同时postDelay()
会将Runnable对象添加到MessageQueue中,当Queue中到达此Runnable对象时,系统将调用Runnable的run()方法。
所以它就像一个循环,你可以运行,postDelay 会调用 run(),run() 会调用 postDelay() ....
所以请不要在run方法中调用postDelay()。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)