Scheduling a periodic job
So far, we have scheduled one-shot jobs, but do you know there is an option to schedule the execution of a job at periodic internals. These kinds of jobs might be the perfect construct to performing repeating backups or repeating network operations such as application user data backup.
Let's update our AccountInfoActivity
to schedule the periodic execution of the account synchronization job.
We'll start by defining a new job identifier for our periodic job:
static final int SYNC_PER_JOB_ID = "SyncJobPerService".hashCode();
We can schedule a periodic job to be executed approximately every 12 hours like this:
JobInfo.Builder builder = new JobInfo.Builder(SYNC_PER_JOB_ID, serviceName); builder.setRequiresDeviceIdle(true) // Persist the schedule across the device reboots .setPersisted(true) .setPeriodic(TimeUnit.HOURS.toMillis(12L)) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) .setRequiresDeviceIdle(true) .setExtras(bundle); // Schedule the...