我是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秒。有没有人可以用这个帮助莫?提前致谢! :)
答案 0 :(得分:4)
你的问题是你在for循环中运行postDelayed
。你同时运行处理程序n次。你可以同时启动所有这些(因为完成foor循环需要不到一毫秒)。你应该
在时间量上加counter
。
handler.postDelayed(new Runnable(){
@Override
public void run() {
mp.start();
}
},countr += 2000);
答案 1 :(得分:0)
以下是带有延迟计时器的可运行的工作示例。
public Runnable timedTask = new Runnable()
{
@Override
public void run()
{
// type code here which will loop with the given delay
//if you want to end the runnable type this in the condition
if(condition) {
handler.removeCallbacks(this);
return;
}
//delay for the runnable
handler.postDelayed(timedTask, 2000);
}
};
您可以通过输入以下内容从任何地方调用此方法:
handler.post(timedTask);
希望它有所帮助!