我正在尝试创建一个JobScheduler
,它以15分钟的间隔定期运行。运行作业的标准是网络连接。问题是,如果在一个时间间隔内不符合条件,例如如果未连接Internet,则此失败的作业将在下一个间隔运行,并与下一个计划的作业立即运行。例如,如果我关闭WiFi连接30分钟,那么当我打开它时,我会立即获得2个输出。显然,这不是逻辑行为。有什么问题吗?
JobScheduler jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
ComponentName jobService = new ComponentName(this, LoggingService.class);
JobInfo jobInfo = new JobInfo.Builder(110, jobService).setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).
setPeriodic(15 * 60 * 1000).build();
jobScheduler.cancelAll();
jobScheduler.schedule(jobInfo);
和
@Override
public boolean onStartJob(JobParameters params) {
Executors.newSingleThreadExecutor().execute(new Runnable() {
@Override
public void run() {
Log.i("log","running job!");
jobFinished(params,false);
}
});
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}