有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java处理程序延迟后的任务不是精确的计时器

我创建了两个处理程序,每个处理程序都有可运行的任务,这些任务通过以下循环运行:

// 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秒:

enter image description here

这是一个众所周知的问题还是我做错了什么?有没有办法让我的计时器以同样的速度运行?在这种情况下(我想要精确的时间安排),还有其他更好的方法吗


共 (1) 个答案

  1. # 1 楼答案

    这是因为屏幕不能每秒刷新100次,这就是10毫秒计时器的情况。因此,屏幕试图显示您告诉它要显示的每一个值,但只能以最大刷新率显示

    不是计时器慢,而是屏幕跟不上计时器

    要解决这个问题,请尝试计算40毫秒内数字需要下降多少,然后启动一个40毫秒的计时器。这将每秒更新屏幕25次,屏幕应该能够处理