jobDispatcher .newJobBuilder() .setTag(form.tag.get()) .setRecurring(form.recurring.get()) .setLifetime(form.persistent.get() ? Lifetime.FOREVER : Lifetime.UNTIL_NEXT_BOOT) .setService(DemoJobService.class) .setReplaceCurrent(form.replaceCurrent.get()) .setRetryStrategy( jobDispatcher.newRetryStrategy( form.retryStrategy.get(), builder.addConstraint(Constraint.DEVICE_CHARGING); builder.addConstraint(Constraint.ON_ANY_NETWORK); builder.addConstraint(Constraint.ON_UNMETERED_NETWORK); switch (TriggerType.getByPosition(selectedTriggerPosition)) { case NOW_TRIGGER: builder.setTrigger(Trigger.NOW); break; case TIMED_TRIGGER: builder.setTrigger( Trigger.executionWindow(form.getWinStartSeconds(), form.getWinEndSeconds())); break; notifyForDescendants.isChecked() ? ObservedUri.Flags.FLAG_NOTIFY_FOR_DESCENDANTS : 0; ObservedUri observedUri = new ObservedUri(uri, flags); builder.setTrigger(Trigger.contentUriTrigger(Arrays.asList(observedUri)));
dispatcher .newJobBuilder() .setConstraints(Constraint.DEVICE_CHARGING) .setService(TestJobService.class) .setTrigger(Trigger.executionWindow(0, 60)) .setRecurring(false) .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL) .setTag("foobar") .build();
.setExtras(extras) .setLifetime(Lifetime.FOREVER) .setService(OnExitJobService.class) .setRecurring(false) .setReplaceCurrent(true) .setTag(beacon.getUUID().toString()) .setTrigger(Trigger.executionWindow(windowStart, windowStart + 1)) .build());
.setService(MyJobService.class) .setTag(DISPATCHER_TAG) .setRecurring(true) .setLifetime(Lifetime.UNTIL_NEXT_BOOT) .setTrigger(Trigger.executionWindow(0, 60)) .setReplaceCurrent(true) .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL) .setConstraints( .setExtras(myExtrasBundle) .build();
.setService(WaterReminderFirebaseJobService.class) .setTag(REMINDER_JOB_TAG) .setConstraints(Constraint.DEVICE_CHARGING) .setLifetime(Lifetime.FOREVER) .setRecurring(true) .setTrigger(Trigger.executionWindow( REMINDER_INTERVAL_SECONDS, REMINDER_INTERVAL_SECONDS + SYNC_FLEXTIME_SECONDS)) .setReplaceCurrent(true) .build();
private void scheduleNextUpdate(Context context, JobParameters job) { if (job.getTag().equals(UPDATE_JOB_TAG)) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); int updateFreq = Integer.parseInt( prefs.getString(PreferencesActivity.PREF_UPDATE_FREQ, "60")); boolean autoUpdateChecked = prefs.getBoolean(PreferencesActivity.PREF_AUTO_UPDATE, false); if (autoUpdateChecked) { FirebaseJobDispatcher jobDispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context)); jobDispatcher.schedule(jobDispatcher.newJobBuilder() .setTag(PERIODIC_JOB_TAG) .setService(EarthquakeUpdateJobService.class) .setConstraints(Constraint.ON_ANY_NETWORK) .setReplaceCurrent(true) .setRecurring(true) .setTrigger(Trigger.executionWindow( updateFreq*60 / 2, updateFreq*60)) .setLifetime(Lifetime.FOREVER) .build()); } } }
public static void scheduleFirebaseBackgroundUpload(Context context) { FirebaseJobDispatcher jobDispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context)); jobDispatcher.mustSchedule( jobDispatcher.newJobBuilder() .setTag(BACKGROUND_UPLOAD_JOB_TAG) .setService(FirebaseJobService.class) .setConstraints( Constraint.ON_UNMETERED_NETWORK, Constraint.DEVICE_CHARGING) .setTrigger(Trigger.executionWindow( 0, // can start immediately (int) TimeUnit.DAYS.toSeconds(1))) // wait at most a day .build()); }
public static void scheduleUpdateJob(Context context) { FirebaseJobDispatcher jobDispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context)); jobDispatcher.schedule(jobDispatcher.newJobBuilder() .setTag(UPDATE_JOB_TAG) .setService(EarthquakeUpdateJobService.class) .setConstraints(Constraint.ON_ANY_NETWORK) .build()); }
static Job createJob(FirebaseJobDispatcher dispatcher, String gcmSenderId) { Bundle extras = new Bundle(); extras.putString(KEY_GCM_SENDER_ID, gcmSenderId); return dispatcher.newJobBuilder() .setExtras(extras) .setRecurring(false) .setReplaceCurrent(true) // retry with exponential backoff .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL) .setConstraints( // only run on a network Constraint.ON_ANY_NETWORK ) .setService(ParseGCMJobService.class) // the JobService that will be called .setTag(JOB_TAG_REGISTER) // uniquely identifies the job .build(); }
static Job createJob(FirebaseJobDispatcher dispatcher) { return dispatcher.newJobBuilder() .setRecurring(false) .setReplaceCurrent(true) // retry with exponential backoff .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL) .setConstraints( // only run on a network Constraint.ON_ANY_NETWORK ) .setService(ParseFirebaseJobService.class) // the JobService that will be called .setTag(JOB_TAG_UPLOAD_TOKEN) // uniquely identifies the job .build(); }
@Test public void testScheduleJobWithExecutionWindowTrigger() throws Exception { final Job job = jobBuilder() .setTrigger(Trigger.executionWindow(30, 30)) .build(); final int result = subject.schedule(job); assertThat(result).isEqualTo(SCHEDULE_RESULT_SUCCESS); assertAlarmScheduled("UNKNOWN"); }
private @NonNull Job createJob(int inSeconds, BackupType backupType) { return createBuilder(backupType) .setTrigger(inSeconds <= 0 ? NOW : Trigger.executionWindow(inSeconds, inSeconds)) .setRecurring(backupType.isRecurring()) .setLifetime(backupType.isRecurring() ? FOREVER : UNTIL_NEXT_BOOT) .build(); }
@Test public void testScheduleJobWithoutTrigger() throws Exception { final Job job = jobBuilder().build(); final int result = subject.schedule(job); assertThat(result).isEqualTo(SCHEDULE_RESULT_SUCCESS); assertAlarmScheduled("UNKNOWN"); }
@Test public void testScheduleJobWithExecutionWindowTriggerAndTag() throws Exception { final Job job = jobBuilder() .setTag("REGULAR") .setTrigger(Trigger.executionWindow(30, 30)) .build(); final int result = subject.schedule(job); assertThat(result).isEqualTo(SCHEDULE_RESULT_SUCCESS); assertAlarmScheduled("REGULAR"); }
@Test public void testScheduleJobWithUnknownTrigger() throws Exception { final Job job = jobBuilder() .setTrigger(Trigger.contentUriTrigger(Collections.singletonList(new ObservedUri(Uri.parse("foo://bar"), 0)))) .build(); final int result = subject.schedule(job); assertThat(result).isEqualTo(SCHEDULE_RESULT_UNSUPPORTED_TRIGGER); }
private @NonNull Job.Builder createBuilder(BackupType backupType) { return firebaseJobDispatcher.newJobBuilder() .setReplaceCurrent(true) .setService(SmsJobService.class) .setTag(backupType.name()) .setRetryStrategy(defaultRetryStrategy()) .setConstraints(jobConstraints(backupType)); }
private @NonNull Job createContentUriTriggerJob() { return createBuilder(INCOMING) .setTrigger(Trigger.contentUriTrigger(observedUris())) .setRecurring(true) .setLifetime(FOREVER) .setTag(CONTENT_TRIGGER_TAG) .build(); }
.setService(WaterReminderFirebaseJobService.class) .setTag(REMINDER_JOB_TAG) .setConstraints(Constraint.DEVICE_CHARGING) .setLifetime(Lifetime.FOREVER) .setRecurring(true) .setTrigger(Trigger.executionWindow( REMINDER_INTERVAL_SECONDS, REMINDER_INTERVAL_SECONDS + SYNC_FLEXTIME_SECONDS)) .setReplaceCurrent(true) .build();
.setService(WaterReminderFirebaseJobService.class) .setTag(REMINDER_JOB_TAG) .setConstraints(Constraint.DEVICE_CHARGING) .setLifetime(Lifetime.FOREVER) .setRecurring(true) .setTrigger(Trigger.executionWindow( REMINDER_INTERVAL_SECONDS, REMINDER_INTERVAL_SECONDS + SYNC_FLEXTIME_SECONDS)) .setReplaceCurrent(true) .build();
.setService(SunshineFirebaseJobService.class) .setTag(SUNSHINE_SYNC_TAG) .setConstraints(Constraint.ON_ANY_NETWORK) .setLifetime(Lifetime.FOREVER) .setRecurring(true) .setTrigger(Trigger.executionWindow( SYNC_INTERVAL_SECONDS, SYNC_INTERVAL_SECONDS + SYNC_FLEXTIME_SECONDS)) .setReplaceCurrent(true) .build();