嗨我正在對我的一個項目工作,然後我遇到了這個問題,以及我不知道它是一個錯誤還是我只是想分享希望得到一些答案來啓發我的天。所以這裏的問題:Android:定時器onTick問題
我做了一個倒計時器爲我的項目將運行2分鐘(這將是120秒)1000是間隔時間(1000ms = 1s)然後我設置一個檢查器,一個整數120 (全局聲明),每次計時器滴答時會減少一個。整數將顯示在textView倒數。然後當整數到達定時器的onFinish時會顯示一條消息。這個消息將給我多少時間,我通過扣除聲明的整數120來花費。
這裏的問題是計時器在它達到1之前停止,因爲它不會被最後一個計時器扣除。最難的部分是,有時在剩餘時間內停止4次甚至5次。任何人都可以幫我解釋這個嗎?提前致謝!
這是我做進一步的瞭解代碼:
//declared a timer
int timer = 120;
//starts the timer
gameTimer = new gameTimer(120000, 1000);
gameTimer.start();
private class gameTimer extends CountDownTimer{
public gameTimer(long startTime, long interval)
{
super(startTime, interval);
}
public void onTick(long millisUntilFinished)
{
//on tick deduct timer by 1
timer -= 1;
TextView timer1 = (TextView)findViewById(R.id.textView1);
timer1.setText(""+timer);
}
public void onFinish()
{
//PERFORM END ACTION UPON FINISHING THE GAME
endtime = 120 - timer;
TextView endtime1 = (TextView)findViewById(R.id.textView2);
1.setText(""+endtime);
}
}
嘗試上下文傳遞到您的CountDownTimer,當你想在TextView中顯示的定時器,你應該使用Activity.runOnUIThread(新的Runnable); – Houcine
只要說清楚,'onFinish()'回調觸發時,'endtime'值大於1? (或者2,3,4等) – MeLight
endtime的值應該爲:120,因爲定時器的值每次減少1次seconde :)。所以我認爲這是誰調用UI的問題,countDownTimer是一個線程,但他不是一個UI THread,這就是爲什麼我說他應該將上下文傳遞給他的類並重寫方法runOnUIThread()。你怎麼看MeLight? – Houcine