【发布时间】:2015-05-12 12:01:03
【问题描述】:
我是 android 编程新手。我在 postDelayed 中有一个问题,即使我要调用的值大于 1,延迟也只会在循环内执行一次。
这是我的代码
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);
handler.postDelayed(new Runnable(){
@Override
public void run() {
mp.start();
}
},2000);
}else if (u.equals("b4")){
mp = MediaPlayer.create(this, R.raw.b4);
handler.postDelayed(new Runnable(){
@Override
public void run() {
mp.start();
}
},2000);
}
}
}
例如
在播放媒体播放器之前,我希望延迟 2 秒,然后再延迟 2 秒,依此类推,具体取决于我要调用的值的数量……例如,值是 a4、a4 和 a4。每次调用这些值时,我都希望延迟 2 秒。有没有人可以帮助mo解决这个问题?提前致谢! :)
【问题讨论】:
-
循环几乎是瞬间执行的。所有声音都立即排队。将
}, 2000更改为}, (i+1) * 2000应该可以解决它(比如将第一个声音延迟 2 秒,将第二个声音延迟 4 秒等)。 -
谢谢。我试过了,但它不起作用。
-
您应该使用
SoundPool而不是MediaPlayer来播放短音。请仔细阅读本文,我已经可以告诉您,您不会多次致电new SoundPool。
标签: android handler postdelayed