public static void scheduleJob(Context context) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { return; } try { JobScheduler jobScheduler = (JobScheduler) context.getSystemService(JOB_SCHEDULER_SERVICE); if (jobScheduler == null) { return; } JobInfo jobInfo = new JobInfo.Builder(1, new ComponentName(context, DaemonJobService.class)) .setRequiresCharging(false) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .setPeriodic(TimeUnit.MINUTES.toMillis(15)) .build(); jobScheduler.schedule(jobInfo); } catch (Exception ex) { ex.printStackTrace(); } } }
private void scheduleUpdate(int appWidgetId) { String frequency = getConfig(appWidgetId, R.string.pref_widget_frequency); long frequencyHourMillis = DateUtils.HOUR_IN_MILLIS * (TextUtils.isEmpty(frequency) ? DEFAULT_FREQUENCY_HOUR : Integer.valueOf(frequency)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getJobScheduler().schedule(new JobInfo.Builder(appWidgetId, new ComponentName(mContext.getPackageName(), WidgetRefreshJobService.class.getName())) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .setPeriodic(frequencyHourMillis) .build()); } else { mAlarmManager.setInexactRepeating(AlarmManager.RTC, System.currentTimeMillis() + frequencyHourMillis, frequencyHourMillis, createRefreshPendingIntent(appWidgetId)); } }
public static JobInfo enqueueWork(Context ctxt, JobInfo jobInfo, List<JobWorkItem> work) { JobScheduler jobScheduler=ctxt.getSystemService(JobScheduler.class); if (jobInfo==null) { ComponentName cn=new ComponentName(ctxt, WorkService.class); jobInfo=new JobInfo.Builder(JOB_ID, cn) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .build(); } for (JobWorkItem item : work) { jobScheduler.enqueue(jobInfo, item); } return(jobInfo); }
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); }
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); } }
private void agendarJob() { ComponentName componentName = new ComponentName(this, MeuJob.class); JobInfo uploadTask = new JobInfo.Builder(1, componentName) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) .setPeriodic(TimeUnit.SECONDS.toMillis(10)) .build(); JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(uploadTask); }
static void schedule(final Context context) { final ComponentName serviceName = new ComponentName(context, SubmitSampleJob.class); final JobScheduler scheduler = context.getSystemService(JobScheduler.class); if (scheduler.schedule(new JobInfo.Builder(JOB_ID, serviceName) .setPersisted(true) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .build()) == JobScheduler.RESULT_FAILURE) { throw new RuntimeException("job schedule failed"); } }
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); }
private static void schedulePeriodic(Context context) { Timber.d("Scheduling a periodic task"); JobInfo.Builder builder = new JobInfo.Builder(PERIODIC_ID, new ComponentName(context, QuoteJobService.class)); builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .setPeriodic(PERIOD) .setBackoffCriteria(INITIAL_BACKOFF, JobInfo.BACKOFF_POLICY_EXPONENTIAL); JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); scheduler.schedule(builder.build()); }
/** * 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; }
new ComponentName(context.getPackageName(), ItemSyncJobService.class.getName())) .setRequiredNetworkType(Preferences.Offline.isWifiOnly(context) ? JobInfo.NETWORK_TYPE_UNMETERED : JobInfo.NETWORK_TYPE_ANY)
@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.setRequiredNetworkType(networkType); builder.setRequiresDeviceIdle(requirements.isIdleRequired()); builder.setRequiresCharging(requirements.isChargingRequired());
@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); } }
@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()); } } }
@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(); } }
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()); } }
@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()); }