这个CountDownTimer代码如何工作?

问题描述 投票:-1回答:1

我在stackoverflow上看到过这段代码,但我不明白它是如何工作的,我感到非常沮丧

      new CountDownTimer(9000000, 1000) {

    public void onTick(long millisUntilFinished) {
                        long millis = millisUntilFinished;
                        String time = String.format("%02d:%02d:%02d", 

        // From here,, I don't understand what is "going on " 
        TimeUnit.MILLISECONDS.toHours(millis),
         TimeUnit.MILLISECONDS.toMinutes(millis)-
         TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

         TimeUnit.MILLISECONDS.toSeconds(millis)-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

        }

9000000毫秒是:02:30:00

小时:TimeUnit.MILLISECONDS.toHours(millis),

9000000毫秒到几小时是:2.5小时

到此为止,它会显示:02:00:00好吧,我明白了

分钟:TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))

我已经转换并提取了:

TimeUnit.MILLISECONDS.toMinutes(millis)= 150

TimeUnit.MILLISECONDS.toHours(millis)= 2,5

TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))= 150

150-150 = 0,我不应该等于30?

秒:TimeUnit.MILLISECONDS.toSeconds(millis)-TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

同样的,它会给我0

这是如何运作的 ?谢谢 }

java android countdowntimer
1个回答
0
投票

尝试手动完成。首先计算出整整几个小时。然后从总毫秒中减去整个小时数(以毫秒为单位),并使用该结果计算整个分钟数。您可以在几秒钟内完成相同的操作(但要获得秒数,可以简单地减去整个分钟数,因为一小时内会有一整分钟,因此会自动处理小时数)。

也许虚拟变量会有所帮助:

WholeHours =  TimeUnit.MILLISECONDS.toHours(millis)
WholeMinutes = TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
WholeSeconds = TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
© www.soinside.com 2019 - 2024. All rights reserved.