WorkManager是否可以在任务期间发布事件?

时间:2018-09-11 06:33:11

标签: android

最近我尝试使用WorkManager时不再使用旧的解决方案在后台调度任务。

我想知道,Worker是否有某种功能可以在任务执行期间发布事件?我通常会使用某种事件总线,例如Otto,其中我将总线注册到一个子类,该子类在任务达到某个里程碑时会发布事件。

如果workers无法在任务执行期间发布此类事件,是否有办法让我们将eventBus注册到工作人员中以便我们可以这样做?

1 个答案:

答案 0 :(得分:0)

没有参与者,所以我最终找到了解决方法。

我们可以观察到实时WorkStatus,而不是通过事件总线发布事件。

有几种观察工作状态的方法,按照我的方式,我决定根据工作人员的tag进行观察。以下是我如何执行此操作的摘要:

 WorkManager.getInstance().getStatusesByTag("MyWorker")
           .observe(this, new Observer<List<WorkStatus>>() {
               @Override
               public void onChanged(@Nullable List<WorkStatus> workStatuses) {
                   doSomething();
               }
           });

每次发生变化时,我都会查看所有工作状态并决定要做什么。如果需要,您还可以在此处获取数据值。

相关问题