本文介绍了使用WorkManager的PeriodicWorkRequest的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于WorkManager是Google I/O中的新功能,因此我正在尝试使用Workmanager定期执行任务,

Well as WorkManager is newly introduce in Google I/O, I'm trying to use workmanager to perform task periodically,

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

What I'm doing is, Scheduling the work using PeriodicWorkRequest as following :

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 时,它也会立即开始工作,

Problem I'm having is when i'm requesting PeriodicWorkRequest then also it will start work immediately,

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

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

任何帮助将不胜感激.

推荐答案

您可以通过在 PeriodicWorkRequest.Builder .例如,如果您希望在重复间隔结束(例如8小时)后的15分钟内运行Worker,代码将如下所示:

You can achieve this by using flex period in PeriodicWorkRequest.Builder.As example, if you want run your Worker within 15 minutes at the end of repeat interval (let's say 8 hours), code will look like this:

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
    )

视觉上的错觉

这篇关于使用WorkManager的PeriodicWorkRequest的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 10:52