RxJava2:将给定的调度程序应用于整个流?

时间:2016-11-20 10:46:59

标签: android rx-java rx-java2

我有一个GetService.controllerName.data (A),每当Observable<Item> (B)有新的{{1}时,就会发出项目}。

然后使用

A ,例如PublishSubject<Item>

目标:让 A 的完整流在计算调度程序上完成工作,然后在主线程上使用结果。

实际:根据观察到 B 的位置,整个流将相应地在不同的调度程序上运行。在下面的示例中 - 在主线程上,即使通过Item调用。

我怎样才能强迫&#39;来自A的完整流在给定的调度程序上完成其工作,并将结果发送到另一个? A.compose()无法解决问题。

实际代码:

A.subscribeOn(computationScheduler).observeOn(mainThread)

1 个答案:

答案 0 :(得分:0)

flatMap的每个元素都必须位于调度程序上:

                return datastore.queryAll(ExerciseModel.class, true)
                        .subscribeOn(Schedulers.computation())
                        .map(transformer);                      

您还需要在计算调度程序上订阅整个流,否则初始订阅将在当前线程上运行。