2014-05-18 34 views
0

我一直在使用countdowntimer,它已經完美地執行。現在我想要實現相反的(像秒錶),其中時間每秒更新一次屏幕,它會一直增加,直到我停下來。停止計時器遞增(像countdowntimer)

有沒有像Countdowntimer這樣的工作類似的方法(類似於簡單)?我知道我可以使用Timer和Timertask,但是這會創建新的線程,並且我知道它不是可靠的(或推薦的)。

謝謝

回答

1

貌似Chronometer對象是你所需要的。

通過設置一個tick listener,你會得到一個滴答聲每秒(不幸的是,這是可用的最低精度,但從它看起來它已經足夠滿足您的需求)。

+0

完美!正是我在找什麼。但是,我需要將它用作視圖嗎?我是否可以在代碼中將它用作定時器來更新另一個視圖 – Snake

1

如果你對你的項目添加下面的類,你可以用它就像CountDownTimer類:

public abstract class Stopwatch extends Thread { 

    int tickFreq; 


    public Stopwatch(int tickFreq) { 
     this.tickFreq = tickFreq; 
    } 


    abstract void onTick(); 


    @Override 
    public void run() { 
     onTick(); 

     try { 
      Thread.sleep(tickFreq); 
     } 
     catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     super.run(); 
    } 

} 

,並使用它,你可以這樣寫:

new Stopwatch(1000){ 

    @Override 
    void onTick() { 
     // Do whatever you want to do in here 
    } 

}.start(); 

這是帕拉姆傳遞給構造函數(1000)的是應該調用onTick()的頻率。在這種情況下,每1000毫秒,即每1秒。

+0

謝謝您在此處創建線程的問題,這意味着您必須從GUI線程更新UI,這涉及到複雜 – Snake