假设我已经通过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
documentation:
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)
关于android - 我们可以使用WorkManager在其他UniqueWork队列中添加另一个UniqueWork吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54705252/