我有一个倒数计时器,可以开始倒计时当前日期和时间与未来日期和时间之间的小时,分钟和秒。
问题是我在倒计时计时器中遇到了一种行为,该行为在00:00:00以后一直运行。除此之外,倒数计时器还可以正常工作,但我不确定为什么它继续运行到00:00:-1、00:00:-2、00:00:-3 ...
我添加了一个if条件,该条件一旦时间等于“ 00:00:00”就取消了计时器,这可以解决问题,但我仍然想知道为什么会遇到此问题。我很确定这是不正常的,因为我已经看到倒数计时器教程会在到达0时停止,而无需添加其他逻辑。有什么我想念的吗?
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("dd.MM.yyyy, HH:mm:ss");
formatter.setLenient(false);
String endTime = "23.12.2018, 01:35:00";
Date startDate;
Date endDate;
long endTimeMilli = 0;
try {
endDate = formatter.parse(endTime);
endTimeMilli = endDate.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
startDate = new Date();
startTime = startDate.getTime();
if(startTime >= endTimeMilli)
return;
mCountDownTimer = new CountDownTimer(endTimeMilli, 1000) {
@Override
public void onTick(long millisUntilFinished) {
startTime -= 1;
long serverUptimeSeconds =
(millisUntilFinished - startTime) / 1000;
int hoursLeft = (int) serverUptimeSeconds / 3600;
int minutesLeft = (int) serverUptimeSeconds % 3600 / 60;
int secondsLeft = (int) serverUptimeSeconds % 3600 % 60;
String timeLeftFormatted = String.format(Locale.getDefault(), "%02d:%02d:%02d", hoursLeft, minutesLeft, secondsLeft);
mCountdown.setText(timeLeftFormatted);
if(mCountdown.getText().toString().equals("00:00:00"))
mCountDownTimer.cancel();
}
@Override
public void onFinish() { }
}.start();