[英]Java Handler Post Delayed task is not accurate timer
我創建了兩個處理程序,每個處理程序都有可運行的任務,這些任務通過以下循環運行:
// 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秒:
這是一個眾所周知的問題,還是我做錯了什么嚴重的事情? 有什么辦法可以使計時器以相同的速度運行? 在這種情況下(我需要精確的計時),還有其他可以使用的更好的方法嗎?
這是因為屏幕無法每秒刷新100次,而10毫秒計時器正在發生這種情況。 因此,屏幕嘗試顯示您告訴它顯示的每個值,但只能以其最大刷新率進行顯示。
不是計時器變慢,而是屏幕無法跟上計時器。
要解決此問題,請嘗試計算該數字在40毫秒內需要減少多少,然后啟動40ms的計時器。 這將每秒更新屏幕25次,該屏幕應該能夠處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.