我正在 android 中开发一个每周调度程序,我对在特定时间(例如下午 4.00 点)触发的定期工作(例如每周一次)感兴趣,使用evernote android-job
我已经读过这篇文章
https://github.com/evernote/android-job/blob/master/FAQ.md#how-can-i-run-a-job-at-a-specific-time-once-a-day
我可以每天运行一次工作,但这不是我的情况。 如果我设置
new JobRequest.Builder( MY_TAG )
.setExact( TimeUnit.HOURS.toMillis( 16 ) + TimeUnit.MINUTES.toMillis( 0 ))
.setPeriodic( TimeUnit.DAYS.toMillis( 7 ), TimeUnit.MINUTES.toMillis(5) )
.setPersisted(true)
.build()
.schedule();
我有这个错误
"无法在定期作业上调用 setExact()">
有人可以帮助我吗?
setExact()和setPeriodic()是两个不同的功能,它们不能耦合。 如果要定期使用 setExact ,则必须在先前设置的作业运行后以编程方式再次计划作业。
试试这个家伙。
public final class MyDailyJob extends DailyJob {
public static final String TAG = "MyDailyJob";
public static void schedule() {
// schedule between 1 and 6 AM
DailyJob.schedule(new JobRequest.Builder(TAG), TimeUnit.HOURS.toMillis(1), TimeUnit.HOURS.toMillis(6));
}
@NonNull
@Override
protected DailyJobResult onRunDailyJob(Params params) {
return DailyJobResult.SUCCESS;
}
}
参考链接