RxJava 2.x新特性总结整理

网友投稿 220 2023-05-28


RxJava 2.x新特性总结整理

什么是RxJava

Rx是异步响应式编程的意思,本质是观察者模式,以观察者和订阅者的异步响应式编程。

本文主要介绍了关于Rxjava 2.x新特性的相关资料,下面话不多说,来看看详细的介绍吧。

背压的分离

Flowable/Subscriber

Flowable.range(0,10)

.subscribe(new Subscriber() {

Subscription sub;

//当订阅后,会首先调用这个方法,其实就相当于onStart(),

//传入的Subscription s参数可以用于请求数据或者取消订阅

@Override

public void onSubscribe(Subscription s) {

Log.w("TAG","onsubscribe start");

sub=s;

sub.request(1);

Log.w("TAG","onsubscribe end");

}

@Override

public void onNext(Integer o) {

Log.w("TAG","onNext--->"+o);

sub.request(1);

}http://

@Override

public void onError(Throwable t) {

t.printStackTrace();

}

@Override

public void onComplete() {

Log.w("TAG","onComplete");

}

});

输出:

onsubscribe start

onNext--->0

onNext--->1

onNext--->2

...

onNext--->10

onComplete

onsubscribe end

根据上面的代码的结果输出中可以看到,当我们调用subscription.request(n)方法的时候,不等onSubscribe()中后面的代码执行,就会立刻执行到onNext方法,因此,如果你在onNext方法中使用到需要初始化的类时,应当尽量在subscription.request(n)这个方法调用之前做好初始化的工作;

另外一种创建方法

Flowable.create(new FlowableOnSubscribe() {

@Override

public void subscribe(FlowableEmitter e) throws ExceptiqkyBChUlCDon {

e.onNext(1);

e.onNext(2);

e.onNext(3);

e.onNext(4);

e.onComplete();

}

}

//需要指定背压策略

, BackpressureStrategy.BUFFER);

其他观察者模式

Single/SingleObserver

Completable/CompletableObserver

Maybe/MaybeObserver

以上三种类似, 比较适合发送单个数据, 并不适合发送大量数据.

//判断是否登陆

Maybe.just(isLogin())

//可能涉及到IO操作,放在子线程

.subscribeOn(Schedulers.newThread())

//取回结果传到主线程

.observeOn(androidSchedulers.mainThread())

.subscribe(new MaybeObserver() {

@Override

public void onSubscribe(Disposable d) {

}

@Override

public void onSuccess(Boolean value) {

if(value){

...

}else{

...

}

}

@Override

public void onError(Throwable e) {

}

@Override

public void onComplete() {

}

});

实际上,这种观察者模式并不用于发送大量数据,而是发送单个数据,也就是说,当你只想要某个事件的结果(true or false)的时候,你可以用这种观察者模式

Action

Rx1.0———–Rx2.0

Action1——–Action

Action1——–Consumer

Action2——–BiConsumer

后面的Action都去掉了,只保留了ActionN

参考

总结

以上就是关于RxJava 2.x新特性的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java中的SimpleDateFormat使用详解
下一篇:详解SimpleDateFormat的线程安全问题与解决方案
相关文章

 发表评论

暂时没有评论,来抢沙发吧~