好吧,原来我的作业调度程序是这样的:
JobScheduler scheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
if(scheduler.getPendingJob(JOB_NUMBER) == null) {
ComponentName componentName = new ComponentName(this, MyJobService.class);
JobInfo info = new JobInfo.Builder(JOB_NUMBER, componentName)
.setRequiresCharging(false)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setPersisted(true)
.setPeriodic(60 * 60 * 1000L, 5 * 60 *1000)
.build();
int resultCode = scheduler.schedule(info);
if (resultCode == JobScheduler.RESULT_SUCCESS) {
Log.d(TAG, "Service is not running, Job " + String.valueOf(JOB_NUMBER) + " Scheduled.");
} else {
Log.d(TAG, "Service is not running, However job scheduling failed.");
}
} else{
Log.d(TAG, "Service is already scheduled.");
}
setPeriodic()
包括以下内容:
.setMinimumLatency(1 * 1000)
.setOverrideDeadline(3 * 1000)
这样,服务就可以运行了。但是,这不是周期性的,它只运行一次。我找不到允许我在Android Nougat中运行定期作业的文档/教程/示例。有人能帮我吗?
关于这个完全相同的主题还有其他问题:
Job Scheduler not running on Android N
Job Scheduler Not recurring in periodic in Android 7.0 (Nougat)
然而,他们都没有明确的答案。
最后一分钟注意:好吧,似乎传递FlexMillis到
设置周期()
.setPeriodic(15 * 60 * 1000, 5 * 60 *1000)
setPeriodic
它在预定工作10分钟后就开火了。但是,与Oreo不同的是,作业在第一次计划时不会运行。在奥利奥,一旦我建立了作业,作业就运行了。同样,我在文档中找不到提到过这个。