0

特定のメソッドを何度もループするコードがありますが、for ループは 1 回の待機で実行されます。つまり、指定されたコードの場合:

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);
} 

コードは、必要な 30 秒ではなく、10 秒以内に完全に実行されます。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とは必要ないと思いますpostDelayed()Timer

于 2013-01-14T10:53:52.327 に答える