任何方式有PeriodicWorkRequest的初始延迟

问题描述 投票:9回答:1

对于OneTimeWorkRequest,我们可以使用setInitialDelay来确定最初的延迟。

但是,PeriodicWorkRequest没有这样的设施。

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

其中一个不太可靠的方法是,有一个延迟的OneTimeWorkRequest工人,设置PeriodicWorkRequest。然而,这是非常麻烦的,并创造了一种可能性,OneTimeWorkRequest可能会失败,无法安装PeriodicWorkRequest

android android-workmanager
1个回答
1
投票

androidx.work:work-*:2.1.0以来,PeriodicWorkRequests支持最初的延迟。您可以在setInitialDelay上使用PeriodicWorkRequest.Builder方法来设置初始延迟。

有关官方文档,请参阅link


4
投票

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

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

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。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.