嘿,我目前正在设计一个应用程序,其中一些代码每 200 毫秒执行一次。我用于此的线程看起来像这样(简化):
final Handler handler = new Handler();
Runnable runnable = new Runnable()
{ public void run()
{
handler.postDelayed(this, 200);
switch (status){
case 1: check(1);p2.setBackgroundColor(0x00000000); p1.setBackgroundColor(0xDDCC0000); status = 2; break;
case 2: check(2);p1.setBackgroundColor(0x00000000); p2.setBackgroundColor(0xAAAA0000); status = 1; break;
}
}
}; runnable.run();
check() 包含一些非 UI 代码行。
问题是,postDelayed-200-ms 开始,当队列完全执行而不是开始时,所以系统需要一直执行命令堆栈和堆栈,所以这些实际上是 ~210-230ms (取决于 CPU 负载)
然后我尝试在线程的开头获取系统日期并添加 200 毫秒,但这会导致其他一些“更严重”的错误。
我对超过 200ms 的延迟没有任何问题,我只是想让它运行稳定。
我希望你能理解我的问题并能给我一些建议。
编辑:我知道处理程序运行可接受(200 毫秒延迟 4 毫秒)。问题是我当时调用的方法。我将打开一个新问题