I'm using a JobScheduler.setPeriodic() to repeat my JobIntentService. It works the first time but never repeats. Running on Android 7.0
ConcurrentCheck.java
int mdelaymilles = 30000;
JobScheduler jobScheduler = (JobScheduler) mActivity.getSystemService(JOB_SCHEDULER_SERVICE);
ComponentName componentName = new ComponentName(mActivity, ConcurrentCheckService.class);
JobInfo jobInfo = new JobInfo.Builder(JOB_ID, componentName)
.setPeriodic(mdelaymilles)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.build();
int resultCode = jobScheduler.schedule(jobInfo);
if (resultCode == JobScheduler.RESULT_SUCCESS) {
Log.d(LOG_TAG, "Job scheduled!");
Intent intent = new Intent();
intent.putExtra(LAST_POSITION, lastPosition);
JobIntentService.enqueueWork(mActivity, ConcurrentCheckService.class, JOB_ID, intent);
} else {
Log.d(LOG_TAG, "Job not scheduled");
}
The minimum period a job can be scheduled is 15 minutes. If it is set to a value less than 15 minutes, the job will use 15 minutes.
See: MIN_PERIOD_MILLIS in JobInfo.
Also, see this comment in the code too:
Query the minimum interval allowed for periodic scheduled jobs. Attempting to declare a smaller period that this when scheduling a job will result in a job that is still periodic, but will run with this effective period. A recurring task with your interval will need some other service, possibly the Alarm Manager will work for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With