问题描述
我创建了两个Worker类。一个用于上载图像,第二个用于上载图像的调用处理。
我正在初始化WorkManager并开始链接工作。
public void uploadAndProcess() {
workManager.beginUniqueWork("uploadAndProcessWork",ExistingWorkPolicy.APPEND,buildUploadRequest())
.then(buildProcessingRequest())
.enqueue();
}
private Data buildData() {
return new Data.Builder()
.putStringArray("vehicleIds",vehicleIds.toArray(new String[]{}))
.putString("targetId",targetId)
.putInt("position",position != null ? position : -1)
.build();
}
private Constraints buildConstraints() {
return new Constraints.Builder()
.setrequiredNetworkType(NetworkType.CONNECTED)
.build();
}
private OneTimeWorkRequest buildUploadRequest() {
return new OneTimeWorkRequest.Builder(UploadWorker.class)
.setInputMerger(OverwritingInputMerger.class)
.setInputData(buildData())
.setBackoffCriteria(BackoffPolicy.LINEAR,OneTimeWorkRequest.DEFAULT_BACKOFF_DELAY_MILLIS,TimeUnit.MILLISECONDS)
.setConstraints(buildConstraints())
.build();
}
private OneTimeWorkRequest buildProcessingRequest() {
return new OneTimeWorkRequest.Builder(ProcessWorker.class)
.setInputMerger(OverwritingInputMerger.class)
.setBackoffCriteria(BackoffPolicy.LINEAR,TimeUnit.MILLISECONDS)
.setConstraints(buildConstraints())
.build();
}
当我为第一个对象调用uploadAndProcess()
时,一切正常。 UploadWorker获取有效的vehicleIds
参数。图片已上传,输出传递给第二个工作人员。
但是,当第二次调用uploadAndProcess()
时,对于第二个对象,在vehicleIds
内设置了有效的buildData()
,但在vehicleIds
内收到了UploadWorker
来自第一个对象,首先称为UploadWorker。
我不知道这是某些奇怪的预期行为还是在Workers中的一些错误。 有什么方法可以保持uniqueWork入队并拥有适当的inputData参数?使用常规入队工作方法,Workers中的inputData应该是有效的。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)