使用WorkManager的PeriodicWorkRequest [英] PeriodicWorkRequest with WorkManager

查看:135
本文介绍了使用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"

任何帮助将不胜感激.

推荐答案

您可以通过在

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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆