有没有办法让Timer.ScheduleAtFixedRate更准确?

时间:2014-12-21 16:35:54

标签: java android timer

我正在用java编写Android应用程序。尝试制作一个简单的节奏游戏,只需点击节拍上的按钮。我正在使用具有固定速率计划的计时器对象使按钮闪烁,但后来我发现时间可变几毫秒。

显然,节奏游戏需要特定的时间才能正确出现,所以是否有可能使这更加准确和准确?或者我是否正在使用这种方法进行精确定时的咆哮?

2 个答案:

答案 0 :(得分:1)

我不知道Android版本,但这是“真正的”Java会发生什么......

Timer使用System.currentTimeMillis()来跟踪时间;此方法对系统时间更改敏感(例如,您运行NTP服务器)。

这就是为什么,如果你想要更好的精确度,你可以使用ScheduledExecutorService;这依赖于o System.nanoTime(),这是一个纳秒精度计数器,即使系统时间发生变化,它也会在整个过程中不断增加。

所以 - >请改为ScheduledExecutorService

答案 1 :(得分:1)

我建议你不要使用ScheduleAtFixedRate !!使用Looper和Handler.sendMessageDelayed()