为什么下面的 android 中的倒数计时器总是在最后显示 00:01?

Why does the following Count down timer in android always shows 00:01 at the end?

String hms = String.format("%02d:%02d",
                    TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
                    TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)));

我真的不明白

1) 分钟 - 小时的工作方式 TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished))

2) 为什么总是以00:01结尾?

3) 如何调用 CountDowntimeronTick() 方法?

1) 分钟 - 小时的工作方式 TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished))

  • 不知道你为什么要这样做。你可以只写

    字符串 hms = String.format("%02d:%02d", TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished), TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)));

2) 为什么总是以00:01结尾?

是的,你是对的!在倒数计时器中,最后一次调用不会触发 onTick() 方法,它会调用以下方法。

 public void onFinish() {
    mTextField.setText("00:00");
}

因此您可以在上面代码段中显示的 onFinish() 方法中设置“00:00”。

3)CountDowntimer的onTick()方法是如何调用的?

-onTick() 回调在提供给 CountDowntimer 构造函数的固定时间间隔内触发。