gpt4 book ai didi

android - Runnable 的执行速度低于预期

转载 作者:太空狗 更新时间:2023-10-29 12:57:01 25 4
gpt4 key购买 nike

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

为什么 runnable/postDelayed() 没有运行正确的时间? postDelayed() 时序可靠吗? runnable 递减一个变量,然后使用它通过 setText() 更新 EditTextsetText() 是否花费太长时间(几分之一秒),所以 runnable 真的每 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);
}

关于android - Runnable 的执行速度低于预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com