其他分享
首页 > 其他分享> > android-Runnable执行得比预期的慢

android-Runnable执行得比预期的慢

作者:互联网

我在Android应用程序中使用了runnable来更新倒数计时器,如下面的代码所示.它似乎可以正常工作,但是我注意到我的计时器比预期的要花几秒钟的时间.例如,如果应该倒数3分钟,则需要3分5秒.我尝试在服务中使用计时器来管理主要活动中的倒计时显示.计时器/服务按预期工作.

为什么runnable / postDelayed()不能运行正确的时间? postDelayed()计时可靠吗?可运行变量递减一个变量,然后使用它通过setText()更新EditText. setText()是否花费的时间太长(一秒钟的一小部分),那么可运行对象实际上每隔1.x秒运行一次吗?

Handler handler = new Handler();
Runnable r = new Runnable() {
   public void run() {
      // decrement the time remaining and update the display
      handler.postDelayed(this, 1000);
   }
};
...
// start the runnable
handler.postDelayed(r, 1000);

解决方法:

您的代码有点儿设计为不准确,因为您没有考虑可运行组件的耗时.通过执行类似的操作,您可能会获得更好的结果

public void run(){  
    startTime = System.currentTimeMillis();  
    // compare expectedTime to startTime and compensate  
    // <guts of runnable goes here>
    // now wrap it up...
        delay = 1000 - (System.currentTimeMillis() - startTime);  
    if (delay < 0)  
        delay = 0;
    expectedTime = System.currentTimeMillies() + delay;
    handler.postDelayed(this, delay);  
}

标签:postdelayed,runnable,android
来源: https://codeday.me/bug/20191208/2092564.html