Rxjava中compose操作符的使用:
Compose的作用: 对 Observable 进行整体的变换
//rxjava中compose的使用
//在安卓中我们使用rxjava进行操作的时候经常会在子线程进行一下常见的操作
//然后会回到主线程中进行一些更新UI视图的操作
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> e) throws Exception {
Log.d(TAG, "subscribe: 处理耗时的一些操作");
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Integer>() {
@Override
public void accept(@NonNull Integer integer) throws Exception {
Log.d(TAG, "accept: 在主线程main中进行视图的更新");
}
});
在安卓中使用rxjava进行线程切换的时候以下的两句代码我们会经常的使用到
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
如果用的地方少还无所谓 但是如果用的地方多了我们就会选择用一个方法将切换线程的操作给封装起来:
以上用一个方法将频繁的切换线程的操作给封装起来可读性、可维护性都提高了。可是 Observable
被一个方法包起来,
这种方式对于 Observale
的灵活性似乎还是增添了那么点限制。怎么办?这个时候,就应该用 compose()
来解决了:
我们通过使用compose()传入我们自己定义的ObservableTransformer来使得我们的所有的Observable来重用一些共有的操作符操作