当前位置: 移动技术网 > 移动技术>移动开发>Android > RxJava 2.x新特性总结整理

RxJava 2.x新特性总结整理

2019年07月24日  | 移动技术网移动技术  | 我要评论

什么是rxjava

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

本文主要介绍了关于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新特性的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网