RxJava运算符,在订阅者的线程

时间:2016-05-28 05:43:27

标签: android multithreading thread-safety rx-java

有没有人知道rxlava或代码示例中的运算符如何将observable的结果返回到调用它的线程? 实际上它是Android上的另一个缓存)) 该应用程序分为几个层次:

UI |域(中)层(缓存,一些应用逻辑)|数据层(磁盘和网络)

问题是我不知道从不同的层调用哪个线程可观察。所以我必须进行冗余切换到Android主线程或另一个Schedullers.computation()Schedullers.io()线程。

例如,UI层订阅从UI主线程(或任何其他,例如计算)到域层的可观察量,并且如果缓存数据立即存在于返回值中。但是如果我没有缓存的值域层在io线程中订阅数据层,如果我需要生成一些数据并返回到前一层订阅的线程,则磁盘或计算线程中的数据。

当然,我必须考虑并发数据访问。

提前致谢!

UPD:我只是理解,我只需删除任何Observable我从域层恢复.observeOn(AndroidSchedulers.mainThread())。我只需要在订阅时或在我与UI交互但不在任何Domain层Observable上的地方添加最终.observeOn(AndroidSchedulers.mainThread())

1 个答案:

答案 0 :(得分:0)

我不是一位经验丰富的Android开发人员,但据我所知,每个帖子都可以关联Looper以及Handler。 RxAndroid库让你从Handler创建一个Scheduler,你可以在与looper相关联的线程上observeOn