我正在尝试创建一个 Android 应用程序,每秒记录运行者的位置。但是,我发现完成时需要略多于一秒的时间。
这是我的代码:
Runnable run = new Runnable() {
@Override
public void run() {
Long start = SystemClock.elapsedRealtime();
if (getIfRunning() == true) {
try {
if (location2 != null) {
Float distanceFromLast = totalDistance(location2);
addToDistance(distanceFromLast);
}
getCoords();
mMap.clear();
markOldCoords();
writeCoords();
setCount();
updateScreen();
} catch (Exception e) {
}
}
Long time = SystemClock.elapsedRealtime() - start;
handler.postDelayed(this, 1000 - time);
}
};
handler.post(run);
最佳答案
一般来说,你无法像这样得到准确的时间。由于系统当时正在执行其他操作,计时器总是会稍早或稍晚唤醒。您能做的最好的事情就是接受它永远不会完美的事实,并相应地更新您的代码以找出实际触发的时间。
关于java - 循环正好一秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36901635/