我的应用程序有一个类似BlackBerry秒表应用程序的功能:
显示时间的标签,每100毫秒更新一次。
我为一个计时器使用了一个单独的线程,它安排一个TimerTask来更新标签。
一切都很好,但我注意到我应用程序中的秒表比内置的BlackBerry秒表慢了一点--它每分钟慢1秒。
有时,我的应用程序中的计时器会暂停一段时间,大约300-500毫秒,原因不明。
是什么让我应用程序中的计时器比BlackBerry秒表慢?
有什么建议可以创建一个像BlackBerry秒表一样流畅的秒表吗?
发布于 2010-10-31 00:48:34
您应该使用System.currentTimeMillis()来计算时间。计时器不保证何时执行--保证指定的时间是执行开始前的最小延迟,但没有最大值,正如您已经注意到的那样。所以使用计时器来安排UI更新,但是使用System.currentTimeMillis()计算运行时间。
发布于 2010-10-31 00:48:18
我想你不应该依赖于添加时间段。因此,睡眠1秒的60次不应被视为分钟。
相反,睡眠一秒钟,并在醒来后检查系统时间。
https://stackoverflow.com/questions/4059176
复制相似问题