android - 在 Android 中为定期工作管理器设置初始延迟

标签 android kotlin android-workmanager

我有一个 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/

相关文章:

android - 安卓和iphone之间的距离

kotlin - 在Kotlin中编译并运行一个简单程序时,出现错误 “no main manifest attribute”

kotlin - 编织服务器未找到Corda jar文件

java - 小米和oppo等中国ROM上的工作管理器,在电池优化时,将工作的计划延迟增加几个小时

android - Sencha Touch 2 + PhoneGAP VS android SDK

java - 具有相同端口和地址的套接字的两个实例

android - 如何在屏幕顶部显示 Snackbar

kotlin - 相当于 Java 的 'public static final string'

Android WorkManager setForegroundInfo

具有前台服务的 Android worker 不显示通知