我的应用程序具有BlackBerry秒表应用程序等功能:
显示时间的标签,每100毫秒更新一次。
我为Timer使用了一个单独的线程,它调度TimerTask来更新标签。
一切正常,但我注意到我的应用程序中的秒表运行速度比内置黑莓秒表慢一点 - 每分钟丢失1秒。 有时我的应用程序中的计时器暂停一段时间,大约300-500毫秒,原因不明。
什么可以使我的应用程序中的计时器比黑莓秒表慢? 有什么建议可以创建一个像黑莓秒表一样顺畅的秒表吗?
答案 0 :(得分:3)
您应该使用System.currentTimeMillis()来计算时间。 Timer不保证何时执行 - 保证指定的时间是执行开始前的最小延迟,但没有最大值,正如您所注意到的那样。因此,使用Timer来安排UI更新,但使用System.currentTimeMillis()计算已用时间。
答案 1 :(得分:2)
我猜你不应该依赖添加时间段。 所以60秒睡眠1秒不应该被视为分钟。
而是睡了一秒钟,然后醒来检查系统时间。