我一直在使用countdowntimer,它已經完美地執行。現在我想要實現相反的(像秒錶),其中時間每秒更新一次屏幕,它會一直增加,直到我停下來。停止計時器遞增(像countdowntimer)
有沒有像Countdowntimer這樣的工作類似的方法(類似於簡單)?我知道我可以使用Timer和Timertask,但是這會創建新的線程,並且我知道它不是可靠的(或推薦的)。
謝謝
我一直在使用countdowntimer,它已經完美地執行。現在我想要實現相反的(像秒錶),其中時間每秒更新一次屏幕,它會一直增加,直到我停下來。停止計時器遞增(像countdowntimer)
有沒有像Countdowntimer這樣的工作類似的方法(類似於簡單)?我知道我可以使用Timer和Timertask,但是這會創建新的線程,並且我知道它不是可靠的(或推薦的)。
謝謝
貌似Chronometer對象是你所需要的。
通過設置一個tick listener,你會得到一個滴答聲每秒(不幸的是,這是可用的最低精度,但從它看起來它已經足夠滿足您的需求)。
如果你對你的項目添加下面的類,你可以用它就像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秒。
謝謝您在此處創建線程的問題,這意味着您必須從GUI線程更新UI,這涉及到複雜 – Snake
完美!正是我在找什麼。但是,我需要將它用作視圖嗎?我是否可以在代碼中將它用作定時器來更新另一個視圖 – Snake