如何为Worker(WorkerManager API)排队任务?
How to queue tasks for Worker (WorkerManager API)?
我有一连串的请求
fun foo(){
....
WorkManager.getInstance(iC)
.beginWith(downloadWorkRequest)
.then(unzipWorkRequest)
.then(deleteWorkRequest)
.enqueue()
.....
}
整个任务(假设)需要 1 分钟...问题是如果我在一分钟内调用此方法几次(例如 4 次),那么 WorkManager
真的会启动此任务4次异步。
我需要同步执行所有这些任务(如队列)。
怎么做?
您可以使用 unique work in this case with a ExistingWorkPolicy.APPEND
fun foo(){
....
WorkManager.getInstance(iC)
.beginUniqueWork(
"my_unique_work_name",
ExistingWorkPolicy.APPEND,
downloadWorkRequest)
.then(unzipWorkRequest)
.then(deleteWorkRequest)
.enqueue()
.....
}
您可以在 WorkManager codelab 中找到这方面的示例。
我有一连串的请求
fun foo(){
....
WorkManager.getInstance(iC)
.beginWith(downloadWorkRequest)
.then(unzipWorkRequest)
.then(deleteWorkRequest)
.enqueue()
.....
}
整个任务(假设)需要 1 分钟...问题是如果我在一分钟内调用此方法几次(例如 4 次),那么 WorkManager
真的会启动此任务4次异步。
我需要同步执行所有这些任务(如队列)。
怎么做?
您可以使用 unique work in this case with a ExistingWorkPolicy.APPEND
fun foo(){
....
WorkManager.getInstance(iC)
.beginUniqueWork(
"my_unique_work_name",
ExistingWorkPolicy.APPEND,
downloadWorkRequest)
.then(unzipWorkRequest)
.then(deleteWorkRequest)
.enqueue()
.....
}
您可以在 WorkManager codelab 中找到这方面的示例。