您应该使用一个
TimerTask,并将所有UI更新放入该单个计时器中,而不是
CountDownTimer为基本相同的任务运行多个s,因为您已经在做所有数学运算以确定任何特定项目的“时间到了”,您可能只运行一个
TimerTask并每秒更新一次。
CountDownTimer对于单个实现倒计时很有用,因为它会执行一些内置数学运算,等等。您正在重做所有数学运算,因此您最好使用一个regular实例
TimerTask。
CountDownTimer在处理程序消息传递中按计划的延迟实现中继。单个倒计时实例不太可能导致任何奇怪的行为,但是如果您有多个实例,那么所有这些都应该在系统时钟每秒命中时“滴答”(以毫秒为单位的时间以“
000”结尾-每秒一次,所有同时),那么这些处理程序都会尝试同时触发,并且不可避免地会失败。
如果UI或其他进程可能会延迟其中的某些消息,甚至达到“跳过刻度”以追赶的程度。同样,这意味着下一条消息的延迟可能仅距下一个刻度线的毫秒数(即,如果应该每隔1000毫秒检查一次,但又延迟了1990毫秒,则它将跳过一个刻度线,并将下一条消息安排为10迈尔斯进入未来。



