首页 > 解决方案 > PeriodicWorkRequest 初始延迟的任何方式

问题描述

对于OneTimeWorkRequest,我们必须setInitialDelay指定初始延迟。

但是,没有这样的设施PeriodicWorkRequest

有没有可靠的方法来实现这一目标?

一种不太可靠的方法是让一个延迟的OneTimeWorkRequest工作人员来设置PeriodicWorkRequest. 不过这样比较麻烦,而且有可能会出现哪里OneTimeWorkRequest失败,无法安装PeriodicWorkRequest

标签: androidandroid-workmanager

解决方案


由于系统运行您的工作,您无法控制它将运行的确切时间。

创建工作执行延迟的最佳选择是使用它PeriodicWorkRequest.Builder并提供 aflexInterval作为第四个参数:

PeriodicWorkRequest build = new PeriodicWorkRequest.Builder(
     SyncJobWorker.class, 
     REPEAT_INTERVAL, // repeatInterval
     TimeUnit.MILLISECONDS, // repeatIntervalTimeUnit
     FLEX_INTERVAL, // flexInterval
     TimeUnit.MILLISECONDS) // flexIntervalTimeUnit
       .build();

文档参考:https ://developer.android.com/reference/androidx/work/PeriodicWorkRequest.Builder#periodicworkrequestbuilder_2

创建一个 PeriodicWorkRequest 以在每个间隔周期的弹性周期内定期运行一次。见下图。弹性周期从intervalMillis - flexMillis 开始到间隔结束。intervalMillis 必须大于或等于 PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS 并且 flexMillis 必须大于或等于 PeriodicWorkRequest.MIN_PERIODIC_FLEX_MILLIS。

在此处输入图像描述


推荐阅读