android - 我们可以使用 WorkManager 在其他 UniqueWork 的队列中添加另一个 UniqueWork
问题描述
假设我已经使用WorkManager开始了这个 UniqueWork :-
var workContinuation: WorkContinuation = WorkManager.getInstance()
.beginUniqueWork(AppConstants.FILE_CREATOR_TAG,
ExistingWorkPolicy.APPEND,
firstOneTimeWorkRequest)
现在,我们的应用程序用户可能希望为其他任务启动另一个 UniqueWork 工作,但该任务应添加到上述工作任务的队列中。
var workContinuation: WorkContinuation = WorkManager.getInstance()
.beginUniqueWork(AppConstants.FILE_DISTRIBUTE_TAG,
ExistingWorkPolicy.APPEND,
fileDistrubuteTimeWorkRequest)
现在我如何告诉 WorkManager 这个 UniqueWork AppConstants.FILE_DISTRIBUTE_TAG 应该在这个 AppConstants.FILE_CREATOR_TAG 的队列中。
我不想使用 Observable 解决方案,在该解决方案中我可以跟踪该AppConstants.FILE_CREATOR_TAG
工作人员的完成并开始AppConstants.FILE_DISTRIBUTE_TAG
。
解决方案
uniqueWorkName
您应该为两个工人指定相同的。参考beginUniqueWork
文档:
唯一标识这
uniqueWorkName
组工作。如果此方法确定应将新工作排入队列并运行,
uniqueWorkName
则将删除以前工作的所有记录。如果此方法确定不应运行新工作,则整个链将被视为无操作。如果链中的任何工作失败或被取消,其所有相关工作都会继承该状态并且永远不会运行。如果您将
APPEND
其用作ExistingWorkPolicy ,这一点尤其重要。
因此,您的代码应该这样编写:
var workContinuation: WorkContinuation = WorkManager.getInstance()
.beginUniqueWork(AppConstants.SOME_UNIQUE_NAME,
ExistingWorkPolicy.APPEND,
firstOneTimeWorkRequest)
// ...
var workContinuation: WorkContinuation = WorkManager.getInstance()
.beginUniqueWork(AppConstants.SOME_UNIQUE_NAME,
ExistingWorkPolicy.APPEND,
fileDistrubuteTimeWorkRequest)
推荐阅读
- javascript - HighCharts 中的饼图
- twilio - 从谷歌电子表格数据库向大众发送个性化的 Whatsapp 消息
- c# - 从后缀列表中获取主要单词
- android - 错误:卸载后具有相同包但签名不同的应用程序
- python - Flask SQLAlchemy 批量删除记录
- javascript - 如何在highcharts js中显示负值?
- c - 将数组传递给函数而不是变量
- javascript - DISCORD.JS TypeError:无法读取未定义的属性“url”
- python - 在 numpy 中生成大小为 n、均值 = 20、min=2 和 max=25 的整数列表
- reactjs - ReactJS 调用 API 和重定向