我在我的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正常运行。
请在这方面帮助我...
最佳答案
由于您使用的是scheduleAtFixedRate
而不是schedule
,因此它将尝试赶上最后一天的“遗漏”执行。
从API documentation:
使用固定速率执行时,计划任务每次连续运行的开始时间,而无需考虑上一次运行的时间。如果延迟导致计时器无法按时启动任务,则可能会导致一系列的运行(一次又一次启动)。