Android 我们可以在WorkManager的其他唯一工作队列中添加另一个唯一工作吗

Android 我们可以在WorkManager的其他唯一工作队列中添加另一个唯一工作吗,android,android-workmanager,Android,Android Workmanager,比如说,我开始这项独特的工作时:- 现在,我们的应用程序用户可能希望为其他任务启动另一个UniqueWork工作,但该任务应该添加到上述工作任务的队列中 var workContinuation: WorkContinuation = WorkManager.getInstance() .beginUniqueWork(AppConstants.FILE_DISTRIBUTE_TAG, Existin

比如说,我开始这项独特的工作时:-

现在,我们的应用程序用户可能希望为其他任务启动另一个UniqueWork工作,但该任务应该添加到上述工作任务的队列中

var workContinuation: WorkContinuation = WorkManager.getInstance()
                    .beginUniqueWork(AppConstants.FILE_DISTRIBUTE_TAG,
                            ExistingWorkPolicy.APPEND,
                            fileDistrubuteTimeWorkRequest)
现在,我如何告诉WorkManager这个UniqueWork AppConstants.FILE\u DISTRIBUTE\u标记应该在这个AppConstants.FILE\u CREATOR\u标记的队列中


我不想使用可观察的解决方案,在该解决方案中,我可以跟踪此
AppConstants.FILE\u CREATOR\u TAG
worker done并启动
AppConstants.FILE\u DISTRIBUTE\u TAG
您应该为两个worker指定相同的
uniqueWorkName
。请参阅
beginUniqueWork

uniqueWorkName
唯一标识这组工作

如果此方法确定新工作应排队并运行,则使用
uniqueWorkName
的以前工作的所有记录都将被删除。如果此方法确定不应运行新工作,则整个链将被视为不可操作

如果链中的任何工作失败或被取消,则其所有从属工作将继承该状态,并且永远不会运行。如果您使用
APPEND
作为命令,这一点尤为重要

因此,您的代码应该这样编写:

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)

我不能使用某些唯一的工作名称来命名我的两个延续工作,因为这样,如果我只想取消第一个唯一的工作,它将取消这两个工作,因为它们有相同的开始工作名称分配给它们。在我的需求中,我希望两者都有单独的uniueWorkName,因为我还希望检查当前正在运行的工作组。
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)