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 (将#修改为@)