循环延迟任务

时间:2013-01-14 10:22:08

标签: android handler delay runnable

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

我该如何纠正?

1 个答案:

答案 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();
    }
}

我认为,HandlerpostDelayed()没有必要,因为Timer正在做这项工作