2012-06-25 160 views
2

我想以可更改的文本顯示1到100。我喜歡用睡眠()函數,以便它看起來像它的形式增加1到100我的代碼是睡眠功能不起作用

for(int i= 0;i<100;i++) { 
    scorelevel.setText(String.valueOf(i)); 
    try{ 
     Thread.sleep(1000); 
    }catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
} 

但它並沒有正常顯示。任何幫助或建議表示讚賞。

+0

你是什麼意思「它沒有正確顯示」? – Cata

+0

使用Asynctask ....爲你的知識嘗試一個更大的時間,如4秒4000在睡眠中... 1秒的寬鬆到更少.. –

+0

當UI線程休眠時,UI元素不響應觸摸事件,例如,用戶會認爲你的應用程序凍結。而你不想那樣。 – overbet13

回答

5

不要阻塞UI線程,使用AsyncTask代替

+0

也猜測你是在onStart或onCreate方法中調用它,如果是這樣的話,那麼它不適合工作。 – MikeIsrael

+0

謝謝user956030。但我該怎麼做? – Kabir

+0

http://stackoverflow.com/a/9671602/956030 –

0

使用TimerTimerTask執行任何基於時間的任務。

0

可以使用runOnUiThread更新的TextView作爲啓動計數器:

private boolean mClockRunning=false; 
private int millisUntilFinished=0; 
public void myThread(){ 
      Thread th=new Thread(){ 
      @Override 
      public void run(){ 
       try 
       { 
       while(mClockRunning) 
       { 
       Thread.sleep(1000L);// set time here for refresh time in textview 
       YourCurrentActivity.this.runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
       // TODO Auto-generated method stub 
        if(mClockRunning) 
        { 
        if(millisUntilFinished==100) 
       { 
       mClockRunning=false; 
       millisUntilFinished=0; 
       } 
       else 
       { 
       millisUntilFinished++; 
       scorelevel.setText(String.valueOf(millisUntilFinished));//update textview here 

       } 
      } 

      }; 
      } 
       }catch (InterruptedException e) { 
      // TODO: handle exception 
      } 
      } 
      }; 
      th.start(); 
      } 
+0

@kabir試試我的答案 –