如何为Worker排队任务(WorkerManager API)?

时间:2019-09-04 13:39:35

标签: android android-workmanager workmanagers

我有一系列请求

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

整个任务(比如说)需要1分钟...问题是,如果我在一分钟内多次调用此方法(例如4次),那么WorkManager实际上将启动此任务4次异步地。

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

该怎么做?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以将unique workExistingWorkPolicy.APPEND一起使用

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

您可以在WorkManager codelab中找到一个示例。