工作没有在给定时间内解雇......它延迟......延迟......延迟时间增加。我的要求是使用Android 7.0及更高版本中的Job Scheduler,每10分钟执行一次工作。 这里是我的代码片段
private static long Scheduler_Interval = 5 * DateUtils.MINUTE_IN_MILLIS;
JobScheduler mJobScheduler mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo.Builder builder = new JobInfo.Builder(1, new ComponentName(getPackageName(), JobSchedulerService.class.getName()));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
builder.setPeriodic(Scheduler_Interval, 1 * DateUtils.MINUTE_IN_MILLIS);
}
builder.setRequiresDeviceIdle(false);
if (mJobScheduler.schedule(builder.build()) <= 0) {
ShowToast("Some error while scheduling the job");
}
public class JobSchedulerService extends JobService {
@Override
public boolean onStartJob(JobParameters jobParameters) {
writeToTestLogFile(GetSavedDateFromLocationProvider()+ "|onStartJob");
return false;
}
@Override
public boolean onStopJob(JobParameters jobParameters) {
writeToTestLogFile(GetSavedDateFromLocationProvider()+ "|onStopJob");
return false;
}
}
答案 0 :(得分:2)
最短时间间隔为15分钟。将您的间隔设置为15分钟,然后代码将起作用。
并设置
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
Running as a VM under VMWare
答案 1 :(得分:0)
JobScheduler由Android操作系统优化,因此您的工作永远不会以您指定的完全间隔执行。
指定此作业应以提供的时间间隔重复,每个时段不得超过一次。您无法控制何时在此时间间隔内执行此作业,只能保证在此时间间隔内最多执行一次。
https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setPeriodic(long)