由于 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
)
关于android - 带有 WorkManager 的 PeriodicWorkRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51153003/