全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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


# rxjava2.x  # rxjava2  # rxjava  # 1.x  # 2.x  # RxJava入门指南及其在Android开发中的使用示例  # RxJava入门之介绍与基本运用  # 新特性  # 就会  # 放在  # 你在  # 可以用  # 当你  # 可以看到  # 三种  # 来看看  # 掉了  # 相关资料  # 当我们  # 涉及到  # 谢谢大家  # 多说  # 留了  # 都去  # 判断是否  # 也就是说  # 有疑问 


相关文章: Android使用GridView实现日历的简单功能  如何通过可视化优化提升建站效果?  西安专业网站制作公司有哪些,陕西省建行官方网站?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  孙琪峥织梦建站教程如何优化数据库安全?  如何快速搭建高效香港服务器网站?  如何在建站宝盒中设置产品搜索功能?  如何在建站主机中优化服务器配置?  如何快速上传建站程序避免常见错误?  建站之星安装后如何配置SEO及设计样式?  建站之星展会模版如何一键下载生成?  宝塔建站后网页无法访问如何解决?  做企业网站制作流程,企业网站制作基本流程有哪些?  制作宣传网站的软件,小红书可以宣传网站吗?  如何在阿里云完成域名注册与建站?  广东企业建站网站优化与SEO营销核心策略指南  如何获取免费开源的自助建站系统源码?  如何通过FTP服务器快速搭建网站?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  C#如何在一个XML文件中查找并替换文本内容  宝塔建站助手安装配置与建站模板使用全流程解析  如何快速完成中国万网建站详细流程?  如何在西部数码注册域名并快速搭建网站?  已有域名和空间,如何快速搭建网站?  教学网站制作软件,学习*后期制作的网站有哪些?  网站按钮制作软件,如何实现网页中按钮的自动点击?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何挑选优质建站一级代理提升网站排名?  详解jQuery中基本的动画方法  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何在Windows服务器上快速搭建网站?  建站主机选择指南:服务器配置与SEO优化实战技巧  常州自助建站费用包含哪些项目?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  建站之星在线客服如何快速接入解答?  C++中引用和指针有什么区别?(代码说明)  小建面朝正北,A点实际方位是否存在偏差?  制作表格网站有哪些,线上表格怎么弄?  建站之星CMS五站合一模板配置与SEO优化指南  免费视频制作网站,更新又快又好的免费电影网站?  如何用狗爹虚拟主机快速搭建网站?  如何快速搭建高效WAP手机网站吸引移动用户?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  C#怎么使用委托和事件 C# delegate与event编程方法  如何在搬瓦工VPS快速搭建网站?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何在橙子建站上传落地页?操作指南详解 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。