2016-01-28 59 views
1

我想在一段時間後顯示一些文本。handler.postDelayed()不執行

我最初是從Thread.sleep()開始的。它在立即執行代碼之前暫停。

mTextView.setText("3"); 
try{ 
    Thread.sleep(500); 
}catch(InterruptedException e){ 
    e.printStackTrace(); 
} 
mTextView.setText("2"); 

但它會暫停500毫秒,然後顯示「2」。 它永遠不會顯示「3」。

所以,我切換到一個處理程序。

mTextView.setText("3"); 
Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    public void run() { 
     mTextView.setText("2"); 
    } 
}, 500); 

但由於某種原因,它跳轉到顯示「2」,沒有暫停。看起來處理程序沒有延遲。

爲什麼以及如何讓它延遲?

+4

嘛,500ms的延遲是相當短的,所以你可能不會注意到的變化,特別是取決於你可能會做什麼。 – CommonsWare

+0

您是否嘗試將延遲更改爲較大的數字?如果它仍然是即刻加載,你可以排除這個問題 – drew

+0

我試圖將其更改爲5000毫秒,但它仍然無法正常工作。 – bobbobbob

回答

0

試試這個 -

Handler handler = new Handler(); 
     for(int i=0;i<2;i++){ 
     handler.postDelayed(new Runnable() { 
      public void run() { 
       mTextView.setText(""+(i+2)); 
      } 
     }, 500*i); 
}