最近我尝试使用WorkManager时不再使用旧的解决方案在后台调度任务。
我想知道,Worker
是否有某种功能可以在任务执行期间发布事件?我通常会使用某种事件总线,例如Otto
,其中我将总线注册到一个子类,该子类在任务达到某个里程碑时会发布事件。
如果workers
无法在任务执行期间发布此类事件,是否有办法让我们将eventBus
注册到工作人员中以便我们可以这样做?
答案 0 :(得分:0)
没有参与者,所以我最终找到了解决方法。
我们可以观察到实时WorkStatus
,而不是通过事件总线发布事件。
有几种观察工作状态的方法,按照我的方式,我决定根据工作人员的tag
进行观察。以下是我如何执行此操作的摘要:
WorkManager.getInstance().getStatusesByTag("MyWorker")
.observe(this, new Observer<List<WorkStatus>>() {
@Override
public void onChanged(@Nullable List<WorkStatus> workStatuses) {
doSomething();
}
});
每次发生变化时,我都会查看所有工作状态并决定要做什么。如果需要,您还可以在此处获取数据值。