我创建了两个处理程序,每个处理程序都有一个Runnable Tasks,它们循环运行:
// do it again 1 hundeth of a sec later
QuestionHandler.postDelayed(QuestionHandlerTask, 10);
通过:
// and do it again 1 sec later
GameHandler.postDelayed(GameHandlerTask, 1000);
这两项任务都从10开始并向下计数,其结果显示在标签中。我使用2个处理程序的原因是因为我希望1个计时器按秒计数,1个计数秒计数。
但是,每秒运行一次的GameHandlerTask运行速度明显快于另一个。当它达到1时,QuestionHandlerTask仍然是4秒:
这是一个众所周知的问题还是我做错了什么?有什么方法可以让我的定时器以相同的速度运行吗?在这种情况下(我需要精确的计时),还有其他可以使用的方法吗?
答案 0 :(得分:2)
这是因为屏幕无法每秒刷新100次,这就是10毫秒计时器所发生的情况。因此,屏幕会尝试显示您告诉它显示的每个值,但只能以最大刷新率显示。
计时器不是很慢,它是无法跟上计时器的屏幕。
要解决此问题,请尝试计算在40毫秒内需要减少的数量,并启动40毫秒的计时器。这将每秒更新屏幕25次,屏幕应该能够处理。