Her*_*rry 5 android android-workmanager
假设我已经使用WorkManager开始了这个 UniqueWork :-
var workContinuation: WorkContinuation = WorkManager.getInstance()
.beginUniqueWork(AppConstants.FILE_CREATOR_TAG,
ExistingWorkPolicy.APPEND,
firstOneTimeWorkRequest)
Run Code Online (Sandbox Code Playgroud)
现在,我们的应用程序用户可能想要为其他任务启动另一个 UniqueWork 工作,但该任务应该添加到上述工作任务的队列中。
var workContinuation: WorkContinuation = WorkManager.getInstance()
.beginUniqueWork(AppConstants.FILE_DISTRIBUTE_TAG,
ExistingWorkPolicy.APPEND,
fileDistrubuteTimeWorkRequest)
Run Code Online (Sandbox Code Playgroud)
现在我如何告诉 WorkManager 这个 UniqueWork AppConstants.FILE_DISTRIBUTE_TAG 应该在此 AppConstants.FILE_CREATOR_TAG 的队列中。
我不想使用 Observable 解决方案,在其中我可以跟踪该AppConstants.FILE_CREATOR_TAG工作人员的完成和启动AppConstants.FILE_DISTRIBUTE_TAG。
小智 3
您应该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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |