我正在使用Evernote的JobScheduler
。该库提供了一种设置定期作业的方法,但重复之间的间隔最小为15分钟。
我希望能够每隔几分钟(最多3个,最少2个)将用户的位置发送到服务器。在完成工作后,在技术上可以一次又一次地安排旧工作吗?像这样:
protected Result onRunJob(Params params)
{
// my actual job runs here
schedulePeriodicJob();
return Result.SUCCESS;
}
private void schedulePeriodicJob()
{
jobId = new JobRequest.Builder(ScheduleJob.TAG)
.setExact(TimeUnit.MINUTES.toMillis(2))
.setBackoffCriteria(TimeUnit.MINUTES.toMillis(1), JobRequest.BackoffPolicy.LINEAR)
.build()
.schedule();
}
或者我应该只使用前台服务来实现这一目标?
答案 0 :(得分:0)
Evernote作业计划程序为based upon JobScheduler
,GcmNetworkManager
或AlarmManager
,具体取决于上下文/设备/播放服务版本。无论实现如何,API都会公开following方法:
public JobRequest.Builder setPeriodic(long intervalMs, long flexMs)
我会用这个而不是“手动”重新安排工作。如果不在API级别设置重复工作,我也不认为您的setBackoffCriteria
电话无效。