这里是做职业的一点。
Driver = new GooglePlayDriver(context);
firebaseJobDispatcher = new FirebaseJobDispatcher(driver);
Occupation constraintReminderJob = firebaseJobDispatcher.newJobBuilder()
.setService(ReminderService.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)
.assemble();
firebaseJobDispatcher.schedule(constraintReminderJob);
我们调查一下上述废品怎么样。
职业
有几个归属来做一个职业。
(在您的应用程序中)特别识别作业的字符串标签。
一个 JobService 子类,它将包含与 Job 标识的所有业务原理。
JobTrigger 将确定已制作的 Job 目前已准备好执行。
需要安排约束条件,牢记执行所制定活动的最终目标。当然,它是未填充的,这意味着在启动 JobTrigger 时 Job 将继续运行。
RetryStrategy 负责处理令人失望的情况。默认使用指数退避过程。
生命周期,表示应该按计划进行的活动的季节。
默认是保持作业计划直到下一次启动。
包装是为客户提供的附加物品。这是一个任意参数。
一个布尔值表示作业是否应该重新散列。默认值为 false,这意味着计划的 Job 将只执行一次。
一个布尔值显示预订的 Job 是否应该取代任何先前的 Job
是否有类似的标签。此布尔横幅的默认激励为 false。
一旦你的活动准备好了,你就可以利用 plan() 策略来计划活动。
open static void scheduleJob(Context setting) {
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context));
Occupation work = createJob(dispatcher);
dispatcher.schedule(job);
}
ReminderService.class
open class ReminderService broadens JobService {
/**
* This asynctask will run a vocation once conditions are met with the imperatives
* As soon as client gadget gets associated with the power supply. it will produce
* a warning demonstrating that condition is met.
*/
private AsyncTask mBackgroundTask;
@Override
open boolean onStartJob(final jobParameters) {
mBackgroundTask = new AsyncTask() {
@Override
ensured Object doInBackground(Object[] objects) {
Setting = ReminderService.this;
ReminderTasks.executeTasks(context, ReminderTasks.ACTION_CHARGING_REMINDER);
Log.i("TAG", "onStartJob");
return invalid;
}
@Override
secured void onPostExecute(Object o) {
/* false means, that activity is finished. we would prefer not to reschedule it*/
jobFinished(jobParameters, false);
Log.i("TAG", "onStartJob-OnPost");
}
};
mBackgroundTask.execute();
return genuine;
}
@Override
open boolean onStopJob(JobParameters jobParameters) {
on the off chance that (mBackgroundTask != invalid) {
mBackgroundTask.cancel(true);
}
Log.i("TAG", "onStopJob");
/* genuine means, we're not done, if you don't mind reschedule */
return genuine;
}
}
在使用 FireBase Job Dispatcher 时将使用三种策略。
onStartJob(JobParameters params)- 这是调用职业时将被召唤的基本策略。它继续在基本弦上运行。它将恢复一个布尔值,它告诉一个职业是否存在。回归正版表明还有更多的工作要做。我们可以在活动完成时调用 jobFinished()。
onStopJob(JobParameters params)- 当您的活动停止时考虑使用此技术。如果与活动相关的运行限制不再满足,则活动可能会因为不同的原因而停止。它将恢复一个布尔值,它告诉我们是否应该再次尝试工作。在真正返回的情况下,此时系统会重新设置该活动以执行。
jobFinished(JobParameters params, boolean needsReschedule)- 当工作被卸载到另一个字符串时,它应该被明确地调用。