JobInfo.Builder builder = new JobInfo.Builder(Long.valueOf(job.id).intValue(), new ComponentName(context.getPackageName(), ItemSyncJobService.class.getName())) .setRequiredNetworkType(Preferences.Offline.isWifiOnly(context) ? JobInfo.NETWORK_TYPE_UNMETERED : JobInfo.NETWORK_TYPE_ANY) .setExtras(job.toPersistableBundle()); if (Preferences.Offline.currentConnectionEnabled(context)) { builder.setOverrideDeadline(0); .schedule(builder.build()); } else { Bundle extras = new Bundle(job.toBundle());
@RequiresApi(21) private void scheduleRegularTests(Context context) { initializeWithContext(context); ComponentName serviceComponent = new ComponentName(context, BluetoothTestJob.class); android.app.job.JobInfo.Builder builder = new android.app.job.JobInfo.Builder(BluetoothTestJob.getJobId(context), serviceComponent); builder.setRequiresCharging(false); builder.setRequiresDeviceIdle(false); builder.setPeriodic(900000L); // 900 secs is 15 minutes -- the minimum time on Android builder.setPersisted(true); PersistableBundle bundle = new PersistableBundle(); bundle.putInt("test_type", this.mTestType); builder.setExtras(bundle); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); if (jobScheduler != null) { jobScheduler.schedule(builder.build()); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); JobScheduler jobs= (JobScheduler)getSystemService(JOB_SCHEDULER_SERVICE); ComponentName cn=new ComponentName(this, LongJobService.class); JobInfo.Builder b=new JobInfo.Builder(JOB_ID, cn) .setMinimumLatency(30000) .setOverrideDeadline(60000) .setPersisted(false) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .setRequiresCharging(false) .setRequiresDeviceIdle(false); jobs.schedule(b.build()); Toast.makeText(this, R.string.msg_start, Toast.LENGTH_LONG).show(); finish(); } }
JobInfo.Builder builder = null; builder = new JobInfo.Builder(jobId, serviceComponent) .setExtras(extras) .setRequiredNetworkType(networkTypeCode) .setRequiresCharging(charging) .setRequiresDeviceIdle(idle); builder = builder.setRequiresBatteryNotLow(batteryNotLow); builder = builder.setRequiresStorageNotLow(storageNotLow); builder = builder.setPeriodic(periodicMillis); JobInfo job = builder.build();
bundle.putInt("attempts", numberOfAttempts); ComponentName serviceComponent = new ComponentName(this, LocationUpdateServiceRetryJob.class); JobInfo.Builder builder = new JobInfo.Builder(LocationUpdateServiceRetryJob.JOB_ID, serviceComponent); builder.setMinimumLatency(LOCATION_UPDATE_RESEND_INTERVAL_IN_MS); // wait at least builder.setOverrideDeadline(LOCATION_UPDATE_RESEND_INTERVAL_IN_MS + (5 * 1000)); // maximum delay builder.setExtras(bundle); JobScheduler jobScheduler = getSystemService(JobScheduler.class); jobScheduler.schedule(builder.build()); } else { originalIntent.putExtra("attempts", numberOfAttempts);
JobInfo jobInfo = new JobInfo.Builder(ClearIdentityService.JOB_NUMBER, new ComponentName(this, ClearIdentityService.class)) .setMinimumLatency(delayMillis).build();
JobInfo.Builder builder = new JobInfo.Builder(HASH_CODE, new ComponentName(WatchDogService.this, JobSchedulerService.class)); builder.setPeriodic(DaemonEnv.getWakeUpInterval(DaemonEnv.MINIMAL_WAKE_UP_INTERVAL)); builder.setPeriodic(JobInfo.getMinPeriodMillis(), JobInfo.getMinFlexMillis()); builder.setPersisted(true); JobScheduler scheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE); scheduler.schedule(builder.build()); } else {
JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, serviceName) .setRequiredNetworkType(selectedNetworkOption) .setRequiresDeviceIdle(mDeviceIdleSwitch.isChecked()) .setRequiresCharging(mDeviceChargingSwitch.isChecked()); builder.setPeriodic(seekBarInteger * 1000); } else { Toast.makeText(MainActivity.this, R.string.no_interval_toast, builder.setOverrideDeadline(seekBarInteger * 1000); JobInfo myJobInfo = builder.build(); mScheduler.schedule(myJobInfo); Toast.makeText(this, R.string.job_scheduled, Toast.LENGTH_SHORT).show();
JobInfo jobInfo = new JobInfo.Builder(CONNECTIVITY_CHANGE_JOB_ID, serviceName) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .setPersisted(true) .build();
persistableBundle.putString(EpgSyncJobService.BUNDLE_KEY_INPUT_ID, inputId); persistableBundle.putLong(EpgSyncJobService.BUNDLE_KEY_SYNC_PERIOD, syncDuration); JobInfo.Builder builder = new JobInfo.Builder(REQUEST_SYNC_JOB_ID, jobServiceComponent); JobInfo jobInfo = builder .setExtras(persistableBundle) .setOverrideDeadline(EpgSyncJobService.OVERRIDE_DEADLINE_MILLIS) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .build(); scheduleJob(context, jobInfo); if (DEBUG) {
JobInfo.Builder builder = new JobInfo.Builder(NetworkLocationCellsOnlyJob.JOB_ID, serviceComponent); builder.setMinimumLatency(8000); // wait at least builder.setOverrideDeadline(10000); // maximum delay JobInfo jobInfo = builder.build(); jobId= jobInfo.getId(); JobScheduler jobScheduler = getSystemService(JobScheduler.class);
JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, mServiceComponent); builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); builder.setRequiresDeviceIdle(false); builder.setRequiresCharging(false); builder.setPeriodic(180000); scheduler.schedule(builder.build());
jobInfo = new JobInfo.Builder(JOB_ID, new ComponentName(context, NekoService.class)) .setMinimumLatency(interval) .build(); noman = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); noman.notify(500, new Notification.Builder(context) .setSmallIcon(R.drawable.stat_icon) .setContentTitle(String.format(Locale.US, "Job scheduled in %d min", (interval / MINUTES)))
JobInfo job = new JobInfo.Builder(0, serviceComponent) .setExtras(extras) .setOverrideDeadline(3 * 1000) .build(); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); assert jobScheduler != null;
persistableBundle.putString(EpgSyncJobService.BUNDLE_KEY_INPUT_ID, inputId); persistableBundle.putLong(EpgSyncJobService.BUNDLE_KEY_SYNC_PERIOD, syncDuration); JobInfo.Builder builder = new JobInfo.Builder(PERIODIC_SYNC_JOB_ID, jobServiceComponent); JobInfo jobInfo = builder .setExtras(persistableBundle) .setPeriodic(fullSyncPeriod) .setPersisted(true) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .build(); scheduleJob(context, jobInfo); if (DEBUG) {
new android.app.job.JobInfo.Builder(job.getId(), jobService) .setExtras(job.getExtras().toPersistableBundle()) .setRequiredNetworkType(job.getNetworkType()) .setRequiresCharging(job.isRequireCharging()) .setRequiresDeviceIdle(job.isRequireDeviceIdle()); builder.setPersisted(true); builder.setPeriodic(job.getIntervalMillis()); } else { if (job.hasEarlyConstraint()) { builder.setMinimumLatency(job.getMinLatencyMillis()); builder.setOverrideDeadline(job.getMaxExecutionDelayMillis()); builder.setBackoffCriteria(job.getInitialBackoffMillis(), job.getBackoffPolicy());
JobInfo.Builder builder = new JobInfo.Builder(mJobId++, mServiceComponent); builder.setMinimumLatency(Long.valueOf(delay) * 1000); builder.setOverrideDeadline(Long.valueOf(deadline) * 1000); builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED); } else if (requiresAnyConnectivity) { builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); builder.setRequiresDeviceIdle(mRequiresIdleCheckbox.isChecked()); builder.setRequiresCharging(mRequiresChargingCheckBox.isChecked()); builder.setExtras(extras); tm.schedule(builder.build());
if (scheduler.schedule(new JobInfo.Builder(FIRST_RUN_JOB_ID, serviceName) .setOverrideDeadline(intervalMillis - OVERRIDE_OFFSET_MS) .setPersisted(true) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .build()) == JobScheduler.RESULT_FAILURE) { throw new RuntimeException("job schedule failed"); if (scheduler.schedule(new JobInfo.Builder(PERIODIC_JOB_ID, serviceName) .setPeriodic(intervalMillis, flexMillis) .setPersisted(true) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .build()) == JobScheduler.RESULT_FAILURE) { throw new RuntimeException("job schedule failed");
private void startAlarms() { appendLog(this, TAG, "scheduleStart at boot, SDK=", Build.VERSION.SDK_INT); if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) { JobScheduler jobScheduler = getSystemService(JobScheduler.class); boolean scheduled = false; for (JobInfo jobInfo: jobScheduler.getAllPendingJobs()) { if (jobInfo.getId() > 0) { appendLog(this, TAG, "scheduleStart does not start - it's scheduled already"); scheduled = true; break; } } if (!scheduled) { appendLog(this, TAG, "scheduleStart at MainActivity"); AppPreference.setLastSensorServicesCheckTimeInMs(this, 0); jobScheduler.cancelAll(); ComponentName serviceComponent = new ComponentName(this, StartAutoLocationJob.class); JobInfo.Builder builder = new JobInfo.Builder(StartAutoLocationJob.JOB_ID, serviceComponent); builder.setMinimumLatency(1 * 1000); // wait at least builder.setOverrideDeadline(3 * 1000); // maximum delay jobScheduler.schedule(builder.build()); } } else { Intent intentToStartUpdate = new Intent("org.thosp.yourlocalweather.action.START_ALARM_SERVICE"); intentToStartUpdate.setPackage("org.thosp.yourlocalweather"); startService(intentToStartUpdate); } }
public static void registerJob(Context context, long intervalMinutes) { JobScheduler jss = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); jss.cancel(JOB_ID); long interval = intervalMinutes * MINUTES; long jitter = (long)(INTERVAL_JITTER_FRAC * interval); interval += (long)(Math.random() * (2 * jitter)) - jitter; final JobInfo jobInfo = new JobInfo.Builder(JOB_ID, new ComponentName(context, NekoService.class)) .setMinimumLatency(interval) .setOverrideDeadline(interval + 1000) .build(); Log.v(TAG, "A cat will visit in " + interval + "ms: " + String.valueOf(jobInfo)); jss.schedule(jobInfo); if (NekoLand.DEBUG_NOTIFICATIONS) { NotificationManager noman = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); noman.notify(500, new Notification.Builder(context) .setSmallIcon(R.drawable.stat_icon) .setContentTitle(String.format("Job scheduled in %d min", (interval / MINUTES))) .setContentText(String.valueOf(jobInfo)) .setPriority(Notification.PRIORITY_MIN) .setCategory(Notification.CATEGORY_SERVICE) .setShowWhen(true) .build()); } }