对于OneTimeWorkRequest
,我们必须setInitialDelay
指定初始延迟。
但是,没有这样的设施PeriodicWorkRequest
。
有没有可靠的方法来实现这一目标?
一种不太可靠的方法是让一个延迟的OneTimeWorkRequest
工作人员来设置PeriodicWorkRequest
. 不过这样比较麻烦,而且有可能会出现哪里OneTimeWorkRequest
失败,无法安装PeriodicWorkRequest
。
对于OneTimeWorkRequest
,我们必须setInitialDelay
指定初始延迟。
但是,没有这样的设施PeriodicWorkRequest
。
有没有可靠的方法来实现这一目标?
一种不太可靠的方法是让一个延迟的OneTimeWorkRequest
工作人员来设置PeriodicWorkRequest
. 不过这样比较麻烦,而且有可能会出现哪里OneTimeWorkRequest
失败,无法安装PeriodicWorkRequest
。
由于系统运行您的工作,您无法控制它将运行的确切时间。
创建工作执行延迟的最佳选择是使用它PeriodicWorkRequest.Builder
并提供 aflexInterval
作为第四个参数:
PeriodicWorkRequest build = new PeriodicWorkRequest.Builder(
SyncJobWorker.class,
REPEAT_INTERVAL, // repeatInterval
TimeUnit.MILLISECONDS, // repeatIntervalTimeUnit
FLEX_INTERVAL, // flexInterval
TimeUnit.MILLISECONDS) // flexIntervalTimeUnit
.build();
创建一个 PeriodicWorkRequest 以在每个间隔周期的弹性周期内定期运行一次。见下图。弹性周期从intervalMillis - flexMillis 开始到间隔结束。intervalMillis 必须大于或等于 PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS 并且 flexMillis 必须大于或等于 PeriodicWorkRequest.MIN_PERIODIC_FLEX_MILLIS。
由于androidx.work:work-*:2.1.0
,PeriodicWorkRequests
支持初始延迟。您可以使用setInitialDelay
on 方法PeriodicWorkRequest.Builder
设置初始延迟。
官方文档见链接。