Android CountDownTimer
CountDownTimer 这个类用于倒计时。这样构造:
CountDownTimer countDownTimer = new CountDownTimer(10000, 1000) {@Overridepublic void onTick(long millisUntilFinished) {// TODO 每个周期执行一次。 millisUntilFinished为距离倒计时结束的剩余时长毫秒数}@Overridepublic void onFinish() {// TODO 倒计时结束}};countDownTimer.start(); // 开始倒计时
看下源码是怎么倒计时的:
倒计时启动时,发送一个消息。看下handler怎么处理消息的。handleMessage方法代码如下:
可见,倒计时启动的时候,就调用了一次onTick, 参数为倒计时剩余的时长毫秒数。后面每一个执行周期执行一次onTick方法,直到结束。 有个小细节,每次onTick方法调用后,都会计算下次onTick执行的时间,这里计算了onTick方法耗时,把这个耗时减去了,这样onTick的执行间隔就比较近似于设置的那个执行间隔了。 注意,handler延迟任务的延迟时间只是近似的时间,实际执行间隔会略大于设置 的时间。 不能拿这个间隔去计时。 另外,注意这个handler构造的时候没有显式传Looper对象,执行线程为实例化这个倒计时组件的线程。