欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

RxJava 2.x新特性总结整理

程序员文章站 2022-06-20 22:51:40
什么是rxjava rx是异步响应式编程的意思,本质是观察者模式,以观察者和订阅者的异步响应式编程。 本文主要介绍了关于rxjava 2.x新特性的相关资料,下面话不多...

什么是rxjava

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

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

背压的分离

RxJava 2.x新特性总结整理

flowable/subscriber

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");
 }
});

输出:

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<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);

其他观察者模式

  • single/singleobserver
  • completable/completableobserver
  • maybe/maybeobserver

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

//判断是否登陆
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

参考

RxJava 2.x新特性总结整理

RxJava 2.x新特性总结整理

RxJava 2.x新特性总结整理

RxJava 2.x新特性总结整理

RxJava 2.x新特性总结整理

RxJava 2.x新特性总结整理

RxJava 2.x新特性总结整理

RxJava 2.x新特性总结整理

总结

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