我有一个非常不一致的 android倒计时器,并且不会定期或正确地更新GUI 。
public boolean bTimerRunning = false;
public CountDownTimer timer;
private long currentTime = 180000;
public void onTimerTap(View v) {
if (bTimerRunning) {
//stop timer
timer.cancel();
bTimerRunning = false;
} else {
//start timer
final TextView etTime = (TextView) findViewById(R.id.tvTimer);
//initalize Timer
timer = new CountDownTimer(currentTime, 1000) {
int secondsLeft = 0;
@Override
public void onTick(long millisUntilFinished) {
String currentTimeStr = String.format("%d:%02d",
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))
);
//save value to "pause" timer
currentTime = millisUntilFinished;
//show on text
etTime.setText(currentTimeStr);
}
@Override
public void onFinish() {
}
};
timer.start();
//set boolean
bTimerRunning = true;
}
}
从我在过去的SO问题中看到的情况来看,这是计时器最后几秒钟的典型情况,但我会在前几个刻度中看到它,或者只是在中间。如何让我的计时器更好?会缩小滴答时间的工作和舍入吗?