3

我的应用程序有一个类似于 BlackBerry Stopwatch 应用程序的功能:
显示时间的标签,每 100 毫秒更新一次。

我为 Timer 使用了一个单独的线程,它调度 TimerTask 来更新标签。

一切正常,但我注意到我的应用程序中的秒表运行速度比内置的黑莓秒表慢一点——它每分钟损失 1 秒。
有时我的应用程序中的计时器会暂停一段时间,大约 300-500 毫秒,原因不明。

是什么让我的应用程序中的计时器比黑莓秒表慢?
有什么建议可以创建一个像 BlackBerry 秒表一样流畅运行的秒表吗?

4

2 回答 2

3

您应该使用 System.currentTimeMillis() 来计算时间。Timer 不保证它何时执行 - 保证指定的时间是执行开始之前的最小延迟,但正如您所注意到的,没有最大值。所以使用 Timer 来安排 UI 更新,但使用 System.currentTimeMillis() 计算经过的时间。

于 2010-10-30T16:48:33.787 回答
2

我想你不应该依赖添加时间段。所以 60 次睡眠 1 秒不应被视为一分钟。

而是睡一秒钟,醒来后检查系统时间。

于 2010-10-30T16:48:17.653 回答