使用WorkManager的PeriodicWorkRequest [英] PeriodicWorkRequest with WorkManager
问题描述
由于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屋!