源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

RxJava 2.x新特性总结整理

  • 时间:2021-12-29 03:55 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:RxJava 2.x新特性总结整理
[b]什么是RxJava[/b] Rx是异步响应式编程的意思,本质是观察者模式,以观察者和订阅者的异步响应式编程。 本文主要介绍了关于RxJava 2.x新特性的相关资料,下面话不多说,来看看详细的介绍吧。 [b]背压的分离[/b] [img]http://files.jb51.net/file_images/article/201703/2017330102937365.jpg?2017230102957[/img] [b]Flowable/Subscriber[/b]
Flowable.range(0,10)
.subscribe(new Subscriber<Integer>() {
 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);
 }
 @Override
 public void onError(Throwable t) {
 t.printStackTrace();
 }
 @Override
 public void onComplete() {
 Log.w("TAG","onComplete");
 }
});
[b]输出:[/b]
onsubscribe start
onNext--->0
onNext--->1
onNext--->2
...
onNext--->10
onComplete
onsubscribe end
根据上面的代码的结果输出中可以看到,当我们调用[code]subscription.request(n)[/code]方法的时候,不等[code]onSubscribe()[/code]中后面的代码执行,就会立刻执行到onNext方法,因此,如果你在onNext方法中使用到需要初始化的类时,应当尽量在[code]subscription.request(n)[/code]这个方法调用之前做好初始化的工作; [b]另外一种创建方法[/b]
Flowable.create(new FlowableOnSubscribe<Integer>() {
  @Override
  public void subscribe(FlowableEmitter<Integer> e) throws Exception {
  e.onNext(1);
  e.onNext(2);
  e.onNext(3);
  e.onNext(4);
  e.onComplete();
  }
 }
 //需要指定背压策略
 , BackpressureStrategy.BUFFER);
[b]其他观察者模式 [/b] [list] [*]Single/SingleObserver[/*] [*]Completable/CompletableObserver[/*] [*]Maybe/MaybeObserver [/*] [/list] 以上三种类似, 比较适合发送单个数据, 并不适合发送大量数据.
//判断是否登陆
Maybe.just(isLogin())
 //可能涉及到IO操作,放在子线程
 .subscribeOn(Schedulers.newThread())
 //取回结果传到主线程
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(new MaybeObserver<Boolean>() {
  @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 [b]参考[/b] [img]http://files.jb51.net/file_images/article/201703/2017330103830295.jpg?2017230103922[/img] [img]http://files.jb51.net/file_images/article/201703/2017330104656569.jpg?201723010476[/img] [img]http://files.jb51.net/file_images/article/201703/2017330104848979.jpg?2017230104933[/img] [img]http://files.jb51.net/file_images/article/201703/2017330105024008.jpg?2017230105044[/img] [img]http://files.jb51.net/file_images/article/201703/2017330105115041.jpg?2017230105140[/img] [img]http://files.jb51.net/file_images/article/201703/2017330105201839.jpg?2017230105223[/img] [img]http://files.jb51.net/file_images/article/201703/2017330105242317.jpg?201723010533[/img] [img]http://files.jb51.net/file_images/article/201703/2017330105328974.jpg?2017230105348[/img] [b]总结[/b] 以上就是关于RxJava 2.x新特性的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程素材网的支持。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部