首页 > 解决方案 > 如何为 Worker 排队任务(WorkerManager API)?

问题描述

我有一连串的请求

fun foo(){
....
WorkManager.getInstance(iC)
            .beginWith(downloadWorkRequest)
            .then(unzipWorkRequest)
            .then(deleteWorkRequest)
            .enqueue()
 .....
 }

这整个任务(假设)需要 1 分钟......问题是如果我在一分钟内调用这个方法几次(例如 4 次),那么WorkManager真的会异步启动这个任务 4 次。

我需要所有这些任务都将同步执行(如队列)。

怎么做?

标签: androidandroid-workmanagerworkmanagers

解决方案


在这种情况下,您可以使用独特的作品ExistingWorkPolicy.APPEND

fun foo(){
....
WorkManager.getInstance(iC)
           .beginUniqueWork(
               "my_unique_work_name",
               ExistingWorkPolicy.APPEND,
               downloadWorkRequest)
           .then(unzipWorkRequest)
           .then(deleteWorkRequest)
           .enqueue()
 .....
 }

您可以在WorkManager codelab中找到这方面的示例。


推荐阅读