0

我有一个代码可以多次循环给定方法,但是 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 循环不应该等待延迟完成吗?

我该如何纠正?

4

1 回答 1

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我认为, and中没有必要postDelayed(),因为Timer做这项工作

于 2013-01-14T10:53:52.327 回答