我在我的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


  使用固定速率执行时,计划任务每​​次连续运行的开始时间,而无需考虑上一次运行的时间。如果延迟导致计时器无法按时启动任务,则可能会导致一系列的运行(一次又一次启动)。

07-26 04:56