我有一个代码循环给定方法很多次,但for循环在一个等待本身中执行。也就是说,对于给定的代码:
for(int j=3;j>=1; j--)
{
final int k=j;
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
randomMethod(k);
Toast.makeText(someService.this, "works!", Toast.LENGTH_SHORT).show();
}
}, 10000);
}
代码在10秒内完全执行,而不是所需的30秒。执行run()后,for循环不应该等待延迟完成吗?
我该如何纠正?
答案 0 :(得分:2)
int REFRESH_INTERVAL = 10 * 1000;
int counter = 3;
...
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTimerTask(), 0, REFRESH_INTERVAL);
...
private class MyTimerTask extends TimerTask{
public void run() {
randomMethod(counter--);
Toast.makeText(someService.this, "works!", Toast.LENGTH_SHORT).show();
}
}
我认为,Handler
和postDelayed()
没有必要,因为Timer
正在做这项工作