2012-07-27 105 views
2

我想在延遲後重復執行一些代碼。以下是代碼。handler.postDelayed()不起作用

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毫秒的差距。

回答

2

您可以簡單地改變你的循環代碼這種方式,

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

然後用

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

這並不能幫助。另外,你只是改變延遲期 – 2012-07-27 13:23:10

+0

是的,第一次運行1秒後,第二次運行2秒後,等等。 – 2012-07-27 13:27:26

1

更換

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

如果你想Runna的每次執行之間的差距。你需要增加你延遲的時間。

例如

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