当前位置:   article > 正文

transformers java_Transformer 在RxJava中的使用

java transformer是干嘛的

89af18d2daba

Transformer.jpeg

Transformer 用途

Transformer,顾名思义是转换器的意思。早在 RxJava1.x 版本就有了Observable.Transformer、Single.Transformer和Completable.Transformer,在2.x版本中变成了ObservableTransformer、SingleTransformer、CompletableTransformer、FlowableTransformer和MaybeTransformer。其中,FlowableTransformer和MaybeTransformer是新增的。由于 RxJava2 将Observable拆分成 Observable 和 Flowable,所以多了一个FlowableTransformer。同时,Maybe是 RxJava2 新增的一个类型,所以多了MaybeTransformer。

Transformer 能够将一个 Observable/Flowable/Single/Completable/Maybe 对象转换成另一个 Observable/Flowable/Single/Completable/Maybe 对象,和调用一系列的内联操作符是一模一样的。

举个简单的例子,写一个transformer()方法将一个发射整数的Observable转换为发射字符串的Observable。

public static ObservableTransformer transformer() {

return new ObservableTransformer() {

@Override

public ObservableSource apply(@NonNull Observable upstream) {

return upstream.map(new Function() {

@Override

public java.lang.String apply(@NonNull Integer integer) throws Exception {

return java.lang.String.valueOf(integer);

}

});

}

};

}

接下来是使用transformer()方法,通过标准的RxJava的操作。

Observable.just(123,456)

.compose(transformer())

.subscribe(new Consumer() {

@Override

public void accept(@io.reactivex.annotations.NonNull String s) throws Exception {

System.out.println("s="+s);

}

});

最后打印了二次,分别是

s=123

s=456

通过这个例子,可以简单和直观地了解到Transformer的作用。

其实,在大名鼎鼎的图片加载框架 Glide 以及 Picasso 中也有类似的transform概念,能够将图形进行变换。

跟compose操作符相结合

compose操作于整个数据流中,能够从数据流中得到原始的Observable/Flowable...

当创建Observable/Flowable...时,compose操作符会立即执行,而不像其他的操作符需要在onNext()调用后才执行。

常用的场景

1. 切换到主线程

对于网络请求,我们经常会做如下的操作来切换线程。

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

于是,我做了一个简单的封装。

import io.reactivex.FlowableTransformer

import io.reactivex.ObservableTransformer

import io.reactivex.android.schedulers.AndroidSchedulers

import io.reactivex.schedulers.Schedulers

/**

* Created by Tony Shen on 201

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/907298
推荐阅读
相关标签
  

闽ICP备14008679号