JAVA中的计时器对于重复任务具有不正确的行为

时间:2016-03-24 02:50:07

标签: android timer scheduled-tasks timertask

我正在使用Timer使用scheduleAtFixedRate()定期安排3个任务。我同时在单独的AsyncTasks中启动这3个任务。

poll_timer.scheduleAtFixedRate(task_polling, 0, 5*60*1000);

结果是任务按照计划执行了一段时间。但是后来根据时间表(5分钟)没有触发任务。一小时后,我会在不同的20毫秒内观察到这些任务的多个触发器。

请告知我应该如何以预定的费率运行我的任务。

代码:

private void createPollingAsynctask(){
    polling = new AsyncTask() {
        @Override
        protected Object doInBackground(Object[] params) {
            setPollingTimer();
            return null;
        }
    };
}

 private void setPollingTimer() {
    if(task_polling != null){
        logi("Polling::Cancel old schedule");
        task_polling.cancel();
    }

    createPollingAction();
    poll_timer.scheduleAtFixedRate(task_polling, 0, 5 * 60 * 1000);

        }
private void createPollingAction(){
    task_polling = new TimerTask() {
        @Override
        public void run() {
            Intent alarmAction = new Intent("action");
            sendBroadcast(alarmAction);
        }
    };
}

0 个答案:

没有答案