1

我有一连串的请求

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

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

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

怎么做?

4

1 回答 1

2

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

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

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

于 2019-09-04T13:52:57.047 回答