JobService只运行一次可以立即运行吗?
我目前正在测试JobService,我使用以下代码
JobScheduler jobScheduler = getSystemService(JobScheduler.class);
jobScheduler.schedule(new JobInfo.Builder(1,
new ComponentName(getApplicationContext(), SyncJobLollipop.class))
.setMinimumLatency(1)
.setOverrideDeadline(1)
.build());
但它立即运行,这是因为我不使用定期?或者它可以直接运行?我想用这个而不是Thread。
我可以在它完成后再次运行吗?
JobService只运行一次可以立即运行吗?
当您使用JobScheduler API时,它承诺在标准完成时它将运行您的JobService,但不一定立即运行。虽然如果您的应用程序位于前台(用户正在使用它),它将更快地运行您的JobService。我看到用户从未使用的应用程序运行作业有很大延迟的情况(此作业只执行一次)。
但它立即运行,这是因为我不定期使用?或者它可以直接运行?
当作业按周期安排时,其默认最小运行时间为15分钟(它不会将作业安排为定期小于15分钟),并且常见作业没有此限制。但这并不意味着在满足条件后立即执行工作,正如我之前解释的那样。
它可以在完成后再次运行吗?
完成后,您可以再次重新安排JobService。我已经实现了它并且运行良好。但是如果你经常安排这个JobService,系统会延迟你的工作执行。
定期作业不需要重新安排,因为在预定的时间量之后,作业将再次执行。
按照我的草案解决方案
class MyJobService extends JobService {
public boolean onStartJob(JobParameters params)
/* Here is run my task */
scheduleJob(); //
return false;
}
public static void scheduleJob() {
/* code to schedule this job service. */
}
}