handler.postDelayed()不起作用

时间:2012-07-27 13:16:17

标签: android

我想在延迟后重复执行一些代码。以下是代码。

public void hintrun(int i){
     Handler handler = new Handler();       
     for(int j = 1; j< i+1;j++) {
         handler.postDelayed(new Runna(j), 1000); 
     }
}

class Runna implements Runnable { 
    private int j;
    public Runna(int j2) {
        j=j2;
    }

    public void run() {  
        // some code
    }
}

但它不起作用。如果说for循环运行3次,则代码在1000毫秒后立即运行三次。我想在每次执行之间留出1000毫秒的差距。

3 个答案:

答案 0 :(得分:2)

你可以这样简单地改变你的循环代码,

for(int j = 1; j< i+1;j++)
{
    handler.postDelayed(new Runna(j), 1000*j); // 1000 * J
}

答案 1 :(得分:1)

然后替换

handler.postDelayed(new Runna(j), 1000); 

handler.postDelayed(new Runna(j), 1000*(i+1));

答案 2 :(得分:1)

如果你想要每次执行Runna之间的差距。你需要增加延迟的时间。

e.g。

handler.postDelayed(new Runna(j),1000 * j);