使用CountDownTimer()直接使用System.currentTimeMillis()的任何好处

时间:2013-09-21 16:30:08

标签: java android countdowntimer

我需要一些同时运行的计时器。我知道CountDownTimer在完成阶段[onFinish()]时会出现问题,有时它会提前完成,但对其中一个优点/缺点的了解不多。直接调用System.currentTimeMillis()必须更轻,但CountDownTimer必须具有某种优势,而不仅仅是易用性,不是吗?

例如,像

这样的东西
long totalTime = 30000;
long startTime = System.currentTimeMillis();
long currTime = System.currentTimeMillis();
while(totalTime > startTime - currTime){
    currTime = System.currentTimeMillis();
}
System.out.println("Finished!");

1 个答案:

答案 0 :(得分:2)

CountDownTimer的主要优势是您在倒计时期间收到的常规通知。与主动调用System.currentTimeMillis()相反,这些通知提供了一种简单的被动地响应剩余时间的方法,这可能需要某种计时器机制。 CountDownTimer代表您进行计时器设置,回调和清理。

您的示例代码会使CPU非常繁忙(从而消耗更多的电池寿命)而没有任何好处。如果代码在主线程上运行,它还会使应用程序的UI无响应。另一方面,CountDownTimer不会停止UI,只会在进行通知时消耗CPU时间。从性能和易用性的角度来看,使用CountDownTimer是正确的选择。