我正在使用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);
}
};
}