如何解决Android Workers,uniqueWork输入数据错误
我创建了两个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 举报,一经查实,本站将立刻删除。