我正在用java编写Android应用程序。尝试制作一个简单的节奏游戏,只需点击节拍上的按钮。我正在使用具有固定速率计划的计时器对象使按钮闪烁,但后来我发现时间可变几毫秒。
显然,节奏游戏需要特定的时间才能正确出现,所以是否有可能使这更加准确和准确?或者我是否正在使用这种方法进行精确定时的咆哮?
答案 0 :(得分:1)
我不知道Android版本,但这是“真正的”Java会发生什么......
Timer
使用System.currentTimeMillis()
来跟踪时间;此方法对系统时间更改敏感(例如,您运行NTP服务器)。
这就是为什么,如果你想要更好的精确度,你可以使用ScheduledExecutorService
;这依赖于o System.nanoTime()
,这是一个纳秒精度计数器,即使系统时间发生变化,它也会在整个过程中不断增加。
所以 - >请改为ScheduledExecutorService
。
答案 1 :(得分:1)
我建议你不要使用ScheduleAtFixedRate !!使用Looper和Handler.sendMessageDelayed()