RxJava 2.x新特性总结整理

发布时间 - 2026-01-11 00:26:39    点击率:

什么是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入门之介绍与基本运用  # 新特性  # 就会  # 放在  # 你在  # 可以用  # 当你  # 可以看到  # 三种  # 来看看  # 掉了  # 相关资料  # 当我们  # 涉及到  # 谢谢大家  # 多说  # 留了  # 都去  # 判断是否  # 也就是说  # 有疑问 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Android自定义listview布局实现上拉加载下拉刷新功能  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel中的Facade(门面)到底是什么原理  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何在VPS电脑上快速搭建网站?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  高端云建站费用究竟需要多少预算?  Java遍历集合的三种方式  如何快速上传自定义模板至建站之星?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  专业商城网站制作公司有哪些,pi商城官网是哪个?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  JavaScript如何实现路由_前端路由原理是什么  5种Android数据存储方式汇总  怎么用AI帮你为初创公司进行市场定位分析?  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  动图在线制作网站有哪些,滑动动图图集怎么做?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  使用C语言编写圣诞表白程序  Python结构化数据采集_字段抽取解析【教程】  Laravel如何使用模型观察者?(Observer代码示例)  JS经典正则表达式笔试题汇总  使用spring连接及操作mongodb3.0实例  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  利用vue写todolist单页应用  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel如何记录自定义日志?(Log频道配置)  如何基于云服务器快速搭建网站及云盘系统?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  在线制作视频的网站有哪些,电脑如何制作视频短片?  如何用景安虚拟主机手机版绑定域名建站?  JavaScript数据类型有哪些_如何准确判断一个变量的类型  清除minerd进程的简单方法  JavaScript如何操作视频_媒体API怎么控制播放  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  C语言设计一个闪闪的圣诞树  如何在服务器上三步完成建站并提升流量?  如何在腾讯云服务器上快速搭建个人网站?  如何用搬瓦工VPS快速搭建个人网站?  图册素材网站设计制作软件,图册的导出方式有几种?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  轻松掌握MySQL函数中的last_insert_id()