我有一个 Worker
需要每 24 小时运行一次的实例,考虑到 PeriodicWorkRequest
,这非常简单。 API。但这就是问题所在。
如果用户在晚上 8 点开始工作,我需要工作管理器的第一个实例在第二天早上 9 点运行,然后遵循 24 小时定期约束。
我看了here我发现 OneTimeWorkRequest API 有一个 setInitialDelay()
可以使用的功能,但我找不到 PeriodicWork
的任何内容API。
对此有一些技巧,例如我可以使用 OneTimeWork
初始延迟,然后安排 PeriodicWork
从那里开始,但它有点肮脏。
有没有办法只用 PeriodicWorkRequest
API?
最佳答案
在新版本的工作管理器上(Version 2.1.0-alpha02 于 2019 年 5 月 16 日发布)PeriodicWorkRequests 现在支持初始延迟。您可以使用 PeriodicWorkRequest.Builder 上的 setInitialDelay 方法来设置初始延迟。
例子:
PeriodicWorkRequest workRequest = new PeriodicWorkRequest.Builder(
WorkerReminderPeriodic.class,
24,
TimeUnit.HOURS,
PeriodicWorkRequest.MIN_PERIODIC_FLEX_MILLIS,
TimeUnit.MILLISECONDS)
.setInitialDelay(1, TimeUnit.HOURS)
.addTag("send_reminder_periodic")
.build();
WorkManager.getInstance()
.enqueueUniquePeriodicWork("send_reminder_periodic", ExistingPeriodicWorkPolicy.REPLACE, workRequest);
关于android - 在 Android 中为定期工作管理器设置初始延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51945439/