在时间跳转之后,TimerTask被重复调用

时间:2016-05-27 07:56:09

标签: android timertask

我在我的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正常运行。

请帮助我......

1 个答案:

答案 0 :(得分:2)

由于您使用scheduleAtFixedRate而不是schedule,因此它会尝试赶上"错过"处决了最后一天。

来自API documentation

  

使用固定费率执行时,将安排每次连续运行任务的开始时间,而不考虑上次运行的时间。如果延迟阻止计时器按时启动任务,这可能会导致一系列的聚合运行(一个紧接着一个启动)。