RxJava 1与RxJava 2的API上的区别

本文介绍了RxJava 2相较于1的主要API变化,包括Flowable的引入支持背压、ActionN和FuncN的改名、Observable.OnSubscribe的变动、Disposable的使用、first()方法的调整、toBlocking()的替代方式以及PublishSubject对backpressure的支持等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RxJava 2相比于RxJava 1,改动还是比较大的,这里我们来简单说一下API上的改变

1.Flowable

RxJava1 中 Observable 不能很好地支持 backpressure ,最常见的例如UI事件,而不处理backpressure有可能导致MissingBackpressureException的出现。所以在 RxJava2 中 Oberservable 不再支持 backpressure ,而使用新增的 Flowable 来支持 backpressure 。
Flowable的用法跟原先的Observable是一样的。

2.ActionN 和 FuncN 改名

ActionN 和 FuncN 遵循Java 8的命名规则。
其中,Action0 改名成Action,Action1改名成Consumer,而Action2改名成了BiConsumer,而Action3 - Action9都不再使用了,ActionN变成了Consumer<Object[]> 。

同样,Func改名成Function,Func2改名成BiFunction,Func3 - Func9 改名成 Function3 - Function9,FuncN 由 Function<Object[], R> 取代。

3.Observable.OnSubscribe 变成 ObservableOnSubscribe

RxJava1的写法:

 

Observable.create(new Observable.OnSubscribe<String>() {
 
 @Override
 public void call(Subscriber<? super String> subscriber) {
  subscriber.onNext("hello");
 }
 
}).subscribe(new Action1<String>() {
 
 @Override
 public void call(String s) {
  System.out.println(s);
 }
});

RxJava2的写法:

 

Observable.create(new ObservableOnSubscribe<String>() {
 
 @Override
 public void subscribe(ObservableEmitter<String> e) throws Exception {
  e.onNext("hello");
 }
 
}).subscribe(new Consumer<String>() {
 
 @Override
 public void accept(String s) {
  System.out.println(s);
 }
});
</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值