android - 如何为 Worker 排队任务(WorkerManager API)?
问题描述
我有一连串的请求
fun foo(){
....
WorkManager.getInstance(iC)
.beginWith(downloadWorkRequest)
.then(unzipWorkRequest)
.then(deleteWorkRequest)
.enqueue()
.....
}
这整个任务(假设)需要 1 分钟......问题是如果我在一分钟内调用这个方法几次(例如 4 次),那么WorkManager
真的会异步启动这个任务 4 次。
我需要所有这些任务都将同步执行(如队列)。
怎么做?
解决方案
在这种情况下,您可以使用独特的作品ExistingWorkPolicy.APPEND
fun foo(){
....
WorkManager.getInstance(iC)
.beginUniqueWork(
"my_unique_work_name",
ExistingWorkPolicy.APPEND,
downloadWorkRequest)
.then(unzipWorkRequest)
.then(deleteWorkRequest)
.enqueue()
.....
}
您可以在WorkManager codelab中找到这方面的示例。
推荐阅读
- python - Django / React Cross-Origin Request Blocked Error 托管 Google App Engine django-cors-headers 不工作
- ruby-on-rails - 无法使用 rails 连接到 mLab 的 MongoDB
- oauth-2.0 - ADFS 客户端凭据授予流与应用程序组中的多个客户端
- r - 基于与 0:0 线的距离的颜色渐变散点图
- apache-camel - 是否可以向 Spring DSL 添加新元素?
- django - 将`select_related`与具有复合主键的表一起使用[Django]
- mysql - 删除行,同时使用 SQL (MySQL) 保留具有最旧日期条目的行
- javascript - 以快递方式发送发布请求时超出最大调用堆栈大小
- .htaccess - .htaccess 重写子域保留原始 url
- powershell - 将日志中的所有空格设置为单个空格