android - 带有 WorkManager 的 PeriodicWorkRequest

标签 android android-workmanager

由于 WorkManager 是 Google I/O 中新引入的,我正在尝试使用 workmanager 定期执行任务,

我正在做的是,使用 PeriodicWorkRequest 安排工作,如下所示:

Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
PeriodicWorkRequest build = new PeriodicWorkRequest.Builder(SyncJobWorker.class, MY_SCHEDULE_TIME, TimeUnit.MILLISECONDS)
           .addTag(TAG)
           .setConstraints(constraints)
           .build();

WorkManager instance = WorkManager.getInstance();
if (instance != null) {
          instance.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.REPLACE, build);
}

我遇到的问题是,当我请求 PeriodicWorkRequest 时,它也会立即开始工作,

  • 有人知道如何停止立即执行的工作吗?在使用 PeriodicWorkRequest 时。
  • 还想知道我们如何重新安排工作? 如果我想更改已排定的工作时间怎么办?

我正在使用:实现“android.arch.work:work-runtime:1.0.0-alpha04”

我们将不胜感激。

最佳答案

您可以通过在 PeriodicWorkRequest.Builder 中使用弹性周期来实现此目的. 例如,如果您希望在重复间隔结束后的 15 分钟内(假设为 8 小时)运行您的 Worker,代码将如下所示:

val periodicRefreshRequest = PeriodicWorkRequest.Builder(
            RefreshWorker::class.java, // Your worker class
            8, // repeating interval
            TimeUnit.HOURS,
            15, // flex interval - worker will run somewhen within this period of time, but at the end of repeating interval
            TimeUnit.MINUTES
    )

Visual ilustration

关于android - 带有 WorkManager 的 PeriodicWorkRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51153003/

相关文章:

java - 将调用类传递给子类,并在子类完成工作时调用其中的方法

java - Android 手机上到 Rails 服务器的基本 HTTP 身份验证

android - Workmanager 中唯一的 OneTimeWorkRequest

java - Android WorkManager PeriodicWorkRequest 问题——应用关闭后不运行

android - 使用 onGroupExpand 获取 ExpandableListView 的扩展组 View

android - 如何使用将自定义可绘制对象应用于 RadioButton?

android - onSharedPreferenceChanged() 从未在 clear() 之后调用

java - 通过tag停止WorkManager并检查是否运行有问题

android - WorkManager 通过标签获取下一次预定工作的时间

android - 工作管理器 : How to set-up different WorkManager Configurations in same App