@Override @SuppressLint("MissingPermission") public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) { getSupportFragmentManager().beginTransaction() .add(android.R.id.content, new EventLogFragment()).commit(); JobScheduler jobs= (JobScheduler)getSystemService(JOB_SCHEDULER_SERVICE); ComponentName cn=new ComponentName(this, ScheduledService.class); JobInfo.Builder b=new JobInfo.Builder(JOB_ID, cn) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_NONE) .setPeriodic(60000) .setPersisted(false) .setRequiresCharging(false) .setRequiresDeviceIdle(false); jobs.schedule(b.build()); } } }
@TargetApi(Build.VERSION_CODES.O) static void scheduleJobs(Context ctxt) { SAWDetector.seeSAW(ctxt); ComponentName cn=new ComponentName(ctxt, PollingService.class); JobInfo.Builder b=new JobInfo.Builder(JOB_ID, cn) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_NONE) .setPeriodic(15 * 60 * 1000, 60000) .setPersisted(true) .setRequiresCharging(false) .setRequiresDeviceIdle(false); ctxt.getSystemService(JobScheduler.class).schedule(b.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 = new JobInfo.Builder(JOB_ID, serviceName) .setRequiredNetworkType(selectedNetworkOption) .setRequiresDeviceIdle(mDeviceIdleSwitch.isChecked()) .setRequiresCharging(mDeviceChargingSwitch.isChecked());
.setRequiredNetworkType(job.getNetworkType()) .setRequiresCharging(job.isRequireCharging()) .setRequiresDeviceIdle(job.isRequireDeviceIdle());
builder.setRequiresDeviceIdle(false);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); builder.setRequiresDeviceIdle(mRequiresIdleCheckbox.isChecked()); builder.setRequiresCharging(mRequiresChargingCheckBox.isChecked());
/** * UI onclick listener to schedule a job. What this job is is defined in * TestJobService#scheduleJob(). */ public void scheduleJob(View v) { if (!ensureTestService()) { return; } JobInfo.Builder builder = new JobInfo.Builder(kJobId++, mServiceComponent); builder.setPeriodic(3000); String delay = mDelayEditText.getText().toString(); if (delay != null && !TextUtils.isEmpty(delay)) { builder.setMinimumLatency(Long.valueOf(delay) * 1000); } String deadline = mDeadlineEditText.getText().toString(); if (deadline != null && !TextUtils.isEmpty(deadline)) { builder.setOverrideDeadline(Long.valueOf(deadline) * 1000); } boolean requiresUnmetered = mWiFiConnectivityRadioButton.isChecked(); boolean requiresAnyConnectivity = mAnyConnectivityRadioButton.isChecked(); if (requiresUnmetered) { builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED); } else if (requiresAnyConnectivity) { builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); } builder.setRequiresDeviceIdle(mRequiresIdleCheckbox.isChecked()); builder.setRequiresCharging(mRequiresChargingCheckBox.isChecked()); mTestService.scheduleJob(builder.build()); }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private static void listing11_11(Context context) { JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); ComponentName jobServiceName = new ComponentName(context, BackgroundJobService.class); // Listing 11-11: Scheduling a job with customized back-off criteria jobScheduler.schedule( new JobInfo.Builder(BACKGROUND_UPLOAD_JOB_ID, jobServiceName) // Require a network connection .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) // Require the device has been idle .setRequiresDeviceIdle(true) // Force Job to ignore constraints after 1 day .setOverrideDeadline(TimeUnit.DAYS.toMillis(1)) // Retry after 30 seconds, with linear back-off .setBackoffCriteria(30000, JobInfo.BACKOFF_POLICY_LINEAR) // Reschedule after the device has been rebooted .setPersisted(true) .build()); }
/** * Schedules a new media library scan job. * * @return true if job was scheduled, false otherwise */ public static boolean scheduleUpdate(Context context) { JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); ComponentName componentName = new ComponentName(context, ScheduledLibraryUpdate.class); JobInfo job = new JobInfo.Builder(JOB_ID_UPDATE, componentName) .setRequiresCharging(true) .setRequiresDeviceIdle(true) .setPeriodic(3600000 * 32) // run at most every ~32 hours .build(); for (JobInfo pj : scheduler.getAllPendingJobs()) { if (jobsEqual(pj, job)) { return false; } } scheduler.schedule(job); return true; }
private void scheduleJob() { Intent serviceIntent = new Intent(this, NetworkSchedulerService.class); startService(serviceIntent); JobInfo myJob = new JobInfo.Builder(0, new ComponentName(this, NetworkSchedulerService.class)) .setRequiresCharging(false) .setMinimumLatency(3000) .setOverrideDeadline(2000) .setRequiresDeviceIdle(false) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .setPersisted(true) .build(); JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(myJob); }
protected JobInfo.Builder createBaseBuilder(JobRequest request, boolean allowPersisting) { JobInfo.Builder builder = new JobInfo.Builder(request.getJobId(), new ComponentName(mContext, PlatformJobService.class)) .setRequiresCharging(request.requiresCharging()) .setRequiresDeviceIdle(request.requiresDeviceIdle()) .setRequiredNetworkType(convertNetworkType(request.requiredNetworkType())) .setPersisted(allowPersisting && !request.isTransient() && JobUtil.hasBootPermission(mContext)); return setTransientBundle(request, builder); }
/** * Schedules or cancels the job, depending on the configuration * * @return true if the job could be scheduled. */ public static boolean scheduleOrCancel(Context context, Configuration configuration) { JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); if (!configuration.hosts.automaticRefresh) { Log.d(TAG, "scheduleOrCancel: Cancelling Job"); scheduler.cancel(JOB_ID); return true; } Log.d(TAG, "scheduleOrCancel: Scheduling Job"); ComponentName serviceName = new ComponentName(context, RuleDatabaseUpdateJobService.class); JobInfo jobInfo = new JobInfo.Builder(JOB_ID, serviceName) .setRequiresCharging(true) .setRequiresDeviceIdle(true) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) .setPersisted(true) .setPeriodic(TimeUnit.DAYS.toMillis(1)) .build(); int result = scheduler.schedule(jobInfo); if (result == JobScheduler.RESULT_SUCCESS) Log.d(TAG, "Job scheduled"); else Log.d(TAG, "Job not scheduled"); return result == JobScheduler.RESULT_SUCCESS; }
@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); }
builder.setRequiresDeviceIdle(requirements.isIdleRequired()); builder.setRequiresCharging(requirements.isChargingRequired()); builder.setPersisted(true);
@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); } }
protected JobInfo.Builder createBaseBuilder(JobRequest request, boolean allowPersisting) { JobInfo.Builder builder = new JobInfo.Builder(request.getJobId(), new ComponentName(mContext, PlatformJobService.class)) .setRequiresCharging(request.requiresCharging()) .setRequiresDeviceIdle(request.requiresDeviceIdle()) .setRequiredNetworkType(convertNetworkType(request.requiredNetworkType())) .setPersisted(allowPersisting && !request.isTransient() && JobUtil.hasBootPermission(mContext)); return setTransientBundle(request, builder); }
@Override protected void configureJob(JobInfo.Builder job) { job.setRequiredNetworkType(schedulerConfiguration.requiresNetworkType()); job.setRequiresCharging(schedulerConfiguration.requiresCharging()); job.setRequiresDeviceIdle(schedulerConfiguration.requiresDeviceIdle()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { job.setRequiresBatteryNotLow(schedulerConfiguration.requiresBatteryNotLow()); } }