@Override public void scheduleReportSending(boolean onlySendSilentReports) { final Intent intent = new Intent(); intent.putExtra(LegacySenderService.EXTRA_ONLY_SEND_SILENT_REPORTS, onlySendSilentReports); intent.putExtra(LegacySenderService.EXTRA_ACRA_CONFIG, config); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); PersistableBundle extras = new PersistableBundle(); extras.putString(LegacySenderService.EXTRA_ACRA_CONFIG, IOUtils.serialize(config)); extras.putBoolean(LegacySenderService.EXTRA_ONLY_SEND_SILENT_REPORTS, onlySendSilentReports); assert scheduler != null; JobInfo.Builder builder = new JobInfo.Builder(0, new ComponentName(context, JobSenderService.class)).setOverrideDeadline(0L).setExtras(extras); configureJob(builder); scheduler.schedule(builder.build()); } else { intent.setComponent(new ComponentName(context, LegacySenderService.class)); context.startService(intent); } }
@Override public boolean shouldFinishActivity(@NonNull Context context, @NonNull CoreConfiguration config, LastActivityManager lastActivityManager) { if (ConfigUtils.getPluginConfiguration(config, SchedulerConfiguration.class).restartAfterCrash() && lastActivityManager.getLastActivity() != null) { Thread thread = new Thread(() -> { try { JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); assert scheduler != null; PersistableBundle extras = new PersistableBundle(); extras.putString(RestartingAdministrator.EXTRA_LAST_ACTIVITY, lastActivityManager.getLastActivity().getClass().getName()); scheduler.schedule(new JobInfo.Builder(0, new ComponentName(context, RestartingService.class)).setExtras(extras).build()); } catch (Exception e) { e.printStackTrace(); } }); thread.start(); try { thread.join(); } catch (InterruptedException ignored) { } } return true; } }
JobInfo.NETWORK_TYPE_UNMETERED : JobInfo.NETWORK_TYPE_ANY) .setExtras(job.toPersistableBundle()); if (Preferences.Offline.currentConnectionEnabled(context)) { builder.setOverrideDeadline(0);
.setExtras(extras) .setRequiredNetworkType(networkTypeCode) .setRequiresCharging(charging)
builder.setExtras(bundle); JobScheduler jobScheduler = getSystemService(JobScheduler.class); jobScheduler.schedule(builder.build());
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)
android.app.job.JobInfo.Builder builder = new android.app.job.JobInfo.Builder(job.getId(), jobService) .setExtras(job.getExtras().toPersistableBundle()) .setRequiredNetworkType(job.getNetworkType()) .setRequiresCharging(job.isRequireCharging())
builder.setExtras(extras);
JobInfo.Builder builder = new JobInfo.Builder(PERIODIC_SYNC_JOB_ID, jobServiceComponent); JobInfo jobInfo = builder .setExtras(persistableBundle) .setPeriodic(fullSyncPeriod) .setPersisted(true)
.setExtras(extras) .setOverrideDeadline(3 * 1000) .build();
public static void scheduleJob(Context context, int max, boolean recurring) { ComponentName serviceComponent = new ComponentName(context, myJobService.class); JobInfo.Builder builder = new JobInfo.Builder(0, serviceComponent); if (recurring) { builder.setPeriodic(15* 10000); //only once every 15 seconds. //builder.setPersisted(true); //will persist across reboots. //except this runs in about 10 to 30 minute intervals... Likely a min threshold here. Log.wtf(TAG, "set recurring"); } else { //just set it for once, between 10 to 30 seconds from now. builder.setMinimumLatency(10 * 1000); // wait at least builder.setOverrideDeadline(30 * 1000); // maximum delay Log.wtf(TAG, "set once"); } //builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED); // require unmetered network //builder.setRequiresDeviceIdle(true); // device should be idle //builder.setRequiresCharging(false); // we don't care if the device is charging or not //builder.setRequiresBatteryNotLow(true); //only when the batter is not low. API 26+ //set some data via a persistablebundle. PersistableBundle extras = new PersistableBundle(); extras.putInt("max", max); builder.setExtras(extras); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(JobScheduler.class); jobScheduler.schedule(builder.build()); }
private void scheduleJob(int id, int jobId, String key) { PersistableBundle bundle = new PersistableBundle(); bundle.putInt(NotificationJobService.NOTIFICATION_MODE, id); bundle.putString(NotificationJobService.NOTIFICATION_KEY, key); JobInfo.Builder builder = new JobInfo.Builder(jobId, serviceComponent); if (jobId == 0) { builder.setPeriodic(120 * 1000L); } else { if (id == NotificationJobService.NOTIFICATION_POSTED_CUSTOM_UI && (!Prefs.getBoolean(Constants.PREF_DISABLE_STANDARD_NOTIFICATIONS, false))) builder.setMinimumLatency(CUSTOMUI_LATENCY); else builder.setMinimumLatency(0); builder.setBackoffCriteria(JOB_INTERVAL, JobInfo.BACKOFF_POLICY_LINEAR); builder.setOverrideDeadline(JOB_MAX_INTERVAL); builder.setExtras(bundle); } jobScheduler.schedule(builder.build()); }
private void addJob(int jobId, int MinimumLatency) { PersistableBundle bundle=new PersistableBundle(); bundle.putString(MyJobService.WORK_DURATION_KEY, "HELLO"); JobInfo.Builder builder=new JobInfo.Builder(jobId, new ComponentName(getPackageName(), MyJobService.class.getName())); // builder.setPeriodic(3000); builder.setMinimumLatency(MinimumLatency); // builder.setOverrideDeadline(OverrideDeadline); builder.setExtras(bundle); builder.setPersisted(true); builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); int result=service.schedule(builder.build()); Log.d("MainActivity", "result:" + result); } }
JobInfo immediateJob = new JobInfo.Builder(ScanJob.getImmediateScanJobId(context), new ComponentName(context, ScanJob.class)) .setPersisted(true) // This makes it restart after reboot .setExtras(new PersistableBundle()) .setMinimumLatency(millisToNextJobStart) .setOverrideDeadline(millisToNextJobStart).build(); .setExtras(new PersistableBundle());
@SuppressLint("SwitchIntDef") @Override public void request(SchedulerConstraint constraint) { JobScheduler jobScheduler = getJobScheduler(); final int id = createId(); JobInfo.Builder builder = new JobInfo.Builder(id, getComponentName()) .setExtras(toPersistentBundle(constraint)) .setPersisted(true); switch (constraint.getNetworkStatus()) { case NetworkUtil.UNMETERED: builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED); break; case NetworkUtil.METERED: builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); break; default: builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_NONE); builder.setRequiresDeviceIdle(true); break; } if (constraint.getDelayInMs() > 0) { builder.setMinimumLatency(constraint.getDelayInMs()); } if (constraint.getOverrideDeadlineInMs() != null) { builder.setOverrideDeadline(constraint.getOverrideDeadlineInMs()); } int scheduled = jobScheduler.schedule(builder.build()); JqLog.d("[FW Scheduler] scheduled a framework job. Success? %s id: %d" + " created id: %d", scheduled > 0, scheduled, id); }
extras.putString(KEY_SERVICE_PACKAGE, servicePackage); extras.putInt(KEY_REQUIREMENTS, requirements.getRequirementsData()); builder.setExtras(extras);
@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()); } }
@TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1) private void manageJobScheduler(boolean start) { JobScheduler jobs= (JobScheduler)getSystemService(JOB_SCHEDULER_SERVICE); if (start) { JobInfo.Builder b=new JobInfo.Builder(JOB_ID, new ComponentName(this, DemoJobService.class)); PersistableBundle pb=new PersistableBundle(); if (download.isChecked()) { pb.putBoolean(KEY_DOWNLOAD, true); b.setExtras(pb).setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); } else { b.setRequiredNetworkType(JobInfo.NETWORK_TYPE_NONE); } b.setPeriodic(getPeriod()).setPersisted(false) .setRequiresCharging(false).setRequiresDeviceIdle(true); jobs.schedule(b.build()); } else { jobs.cancel(JOB_ID); } }
private void manageJobScheduler(boolean start) { if (start) { JobInfo.Builder b=new JobInfo.Builder(JOB_ID, new ComponentName(this, DemoJobService.class)); PersistableBundle pb=new PersistableBundle(); if (download.isChecked()) { pb.putBoolean(KEY_DOWNLOAD, true); b.setExtras(pb).setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); } else { b.setRequiredNetworkType(JobInfo.NETWORK_TYPE_NONE); } b.setPeriodic(getPeriod()).setPersisted(false) .setRequiresCharging(false).setRequiresDeviceIdle(true); jobs.schedule(b.build()); } else { jobs.cancel(JOB_ID); } }