我试图在媒体播放器中播放一组声音后延迟,以便它不会重叠。我已经尝试过thread.sleep并且它有效,但问题是我有一个声音停止的按钮,但由于thread.sleep,它没有工作所以我搜索并尝试替代方式,我可以延迟没有锁定UI,我想出了handler.postDelayed,但它无法正常工作。有没有人可以帮我解决这个问题?提前谢谢。
这是我的代码:
protected void managerOfSound() {
int size = tempq.size();
for (int i = 0; i < tempq.size(); i++) {
String u =tempq.get(i);
//WHOLE
if (u.equals("a4")){
mp = MediaPlayer.create(this, R.raw.a4);
mp.start();
final Runnable r = new Runnable() {
public void run() {
handler.postDelayed(this, 2000);
}
};
答案 0 :(得分:1)
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// stuff you wanna delay
}
}, 2000);
postDelayed(Runnable r,long delayMillis)会将 Runnable 添加到消息队列中,以便在经过指定的时间后运行。 runnable将在连接此处理程序的线程上运行(例如UI线程)。时基是 uptimeMillis()。深度睡眠所花费的时间会给执行带来额外的延迟。