android - 如何观察 LiveData使用 androidx.work.WorkManager 进行链式工作的所有阶段
问题描述
我正在调查androidx.work.WorkManager
我当前的 Android 应用程序。
我在用
implementation 'android.arch.work:work-runtime:1.0.0-rc01'
我正在尝试安排链式工作并观察LiveData<WorkInfo>
每个现场阶段的工作。
我看不出如何实现这一目标。
我当前的代码类似于:-
public LiveData<WorkInfo> syncAll() {
final OneTimeWorkRequest stageOne = new OneTimeWorkRequest.Builder(Stage_0001.class).addTag(STAGE_1_IN_PROGRESS_TAG).build();
final OneTimeWorkRequest stageTwo = new OneTimeWorkRequest.Builder(Stage_0002.class).addTag(STAGE_2_IN_PROGRESS_TAG).build();
final OneTimeWorkRequest stageThree = new OneTimeWorkRequest.Builder(Stage_0003.class).addTag(STAGE_3_IN_PROGRESS_TAG).build();
final OneTimeWorkRequest stageFour = new OneTimeWorkRequest.Builder(Stage_0004.class).addTag(STAGE_4_IN_PROGRESS_TAG).build();
mWorkManager.beginUniqueWork(CHAINED_UNIQUE_NAME, ExistingWorkPolicy.KEEP, stageOne).then(stageTwo).then(stageThree).then(stageFour).enqueue();
return mWorkManager.getWorkInfoByIdLiveData(stageOne.getId());
}
我的观察者只收到 stageOne 更新。
如果我改为
public LiveData<List<WorkInfo>> syncAll() {
final OneTimeWorkRequest stageOne = new OneTimeWorkRequest.Builder(Stage_0001.class).addTag(STAGE_1_IN_PROGRESS_TAG).build();
final OneTimeWorkRequest stageTwo = new OneTimeWorkRequest.Builder(Stage_0002.class).addTag(STAGE_2_IN_PROGRESS_TAG).build();
final OneTimeWorkRequest stageThree = new OneTimeWorkRequest.Builder(Stage_0003.class).addTag(STAGE_3_IN_PROGRESS_TAG).build();
final OneTimeWorkRequest stageFour = new OneTimeWorkRequest.Builder(Stage_0004.class).addTag(STAGE_4_IN_PROGRESS_TAG).build();
mWorkManager.beginUniqueWork(CHAINED_UNIQUE_NAME, ExistingWorkPolicy.KEEP, stageOne).then(stageTwo).then(stageThree).then(stageFour).enqueue();
return mWorkManager.getWorkInfosByTagLiveData(CHAINED_UNIQUE_NAME);
}
我的观察者收到一个空的WorkInfo
s 列表的更新。
我如何观察链式工人序列的每个阶段?
解决方案
getWorkInfosByTagLiveData
不是正确的方法。您正在排队一项独特的工作,这意味着您需要调用getWorkInfosForUniqueWorkLiveData
. 在这种情况下,您调用的另一种方法也适用。
推荐阅读
- rtf - 如何判断这些 RTF 文件是在哪里创建的
- java - 使用 Thymeleaf 生成 DOM 文档
- javascript - 如何通过从 json 文件中获取数据来创建可编辑的表?
- android - 使用 searchview 应用过滤器时 RecyclerView 上的空白输出
- google-cloud-platform - 谷歌云服务帐户不起作用
- bash - 在 bash shell unix 脚本中编辑属性值
- c++ - 无法将字符串分配给向量的向量
- android - Firebase 多个项目和分析 Android
- python - 如何使用 VBScript 将 Excel 电子表格数据导出为 JSON HTTP Post 请求
- git - 如何使用 git log 返回标签之间的拉取请求号