RxJava 2.x新特性总结整理

 更新时间:2017年03月30日 10:41:55   转载 作者:kkooff144  
这篇文章主要介绍了RxJava 2.x新特性的相关资料,文中通过图文及示例代码介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

什么是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新特性的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Android 修改viewpage滑动速度的实现代码

    Android 修改viewpage滑动速度的实现代码

    由于Viewpager的滑动速度是固定的,所以很头疼,下面小编通过实例代码给大家分享android 修改viewpage滑动速度的方法,需要的朋友参考下吧
    2017-09-09
  • 自定义Android六边形进度条(附源码)

    自定义Android六边形进度条(附源码)

    这篇文章主要介绍了自定义Android六边形进度条,本文设计的进度条是六边形的,对进度条感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 在Unity中捕捉Android的常用按钮返回事件

    在Unity中捕捉Android的常用按钮返回事件

    在Unity开发中捕捉Android的常用事件其实很简单,下面通过实例代码给大家详细介绍下,感兴趣的朋友一起看看吧
    2016-12-12
  • android中Webview实现截屏三种方式小结

    android中Webview实现截屏三种方式小结

    本篇文章主要介绍了android Webview实现截屏,主要详解了3种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Android RecyclerView使用方法详解

    Android RecyclerView使用方法详解

    这篇文章主要为大家详细介绍了Android RecyclerView的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Flutter实现底部导航栏效果

    Flutter实现底部导航栏效果

    这篇文章主要为大家详细介绍了Flutter实现底部导航栏效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Android中音视频合成的几种方案详析

    Android中音视频合成的几种方案详析

    随着音视频领域的火热,在很多领域(教育,游戏,娱乐,体育,跑步,餐饮,音乐等)尝试做音视频功能,下面这篇文章主要给大家介绍了关于Android中音视频合成的几种方案的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起看看吧。
    2017-12-12
  • android教程使用webview访问https的url处理sslerror示例

    android教程使用webview访问https的url处理sslerror示例

    这篇文章主要介绍了android教程使用webview访问https的url处理sslerror示例,大家参考使用吧
    2014-01-01
  • android监听View加载完成的示例讲解

    android监听View加载完成的示例讲解

    今天小编就为大家分享一篇android监听View加载完成的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Android 5秒学会使用手势解锁功能

    Android 5秒学会使用手势解锁功能

    本文讲述的是一个手势解锁的库,可以定制显示隐藏宫格点、路径、并且带有小九宫格显示图,和震动!让你学会使用这个简单,高效的库,好了,具体内容详情大家通过本文学习吧
    2017-12-12

最新评论