RxJava - 如何动态地为observeOn设置线程?

时间:2017-06-26 23:10:14

标签: android multithreading dynamic reactive-programming

我们说我有以下代码。

Scheduler ioSC = getIOThread(); 
Scheduler mainSC = AndroidSchedulers.mainThread();

Subscription subs = getObservable()
                    .doOnNext(getAction1())
                    .doOnSubscribe(getAction2())
                    .observeOn(/****TODO***/)
                    .subscribe(getSubsAction());

在这段代码中,我希望能够根据我从getObservable()得到的项目的类型设置observeOn()的线程。 如何在此订阅中添加此条件检查? 甚至可以为observeOn()动态设置线程吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用flatMap()

getObservable()
    .doOnNext(getAction1())
    .doOnSubscribe(getAction2())
    .flatMap(item -> Observable.just(item).observeOn(getScheduler(item)))
    .subscribe(getSubsAction());

然后问题就出现了,为什么你会使用相同的订阅者处理不同线程上的不同项目。这似乎有些偏差,你可能想重新考虑你的链。