我在我的Android代码中添加了一个TimerTask
:
private class MyTimerTask extends TimerTask {
@Override
public void run() {
//do some task...
}
}
并按如下方式调用:
myTimer = new Timer();
//set the rate as 1 min
myTimer.scheduleAtFixedRate(new MyTimerTask(), 0,
60*1000);
现在,如果我关闭自动时间更新(来自网络)并将日期设置为明天的日期,则计时器任务每隔5毫秒开始运行一次。
为此,我不知道为什么会发生这种情况,我需要解决这个问题。我已经使用过处理程序,但我希望TimerTask正常运行。
请帮助我......
答案 0 :(得分:2)
由于您使用scheduleAtFixedRate
而不是schedule
,因此它会尝试赶上"错过"处决了最后一天。
使用固定费率执行时,将安排每次连续运行任务的开始时间,而不考虑上次运行的时间。如果延迟阻止计时器按时启动任务,这可能会导致一系列的聚合运行(一个紧接着一个启动)。