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


相关推荐: Java类加载基本过程详细介绍  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  简单实现Android文件上传  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  WordPress 子目录安装中正确处理脚本路径的完整指南  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Android okhttputils现在进度显示实例代码  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  如何在阿里云虚拟主机上快速搭建个人网站?  Swift开发中switch语句值绑定模式  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  BootStrap整体框架之基础布局组件  jQuery中的100个技巧汇总  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  Laravel如何处理表单验证?(Requests代码示例)  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  如何在腾讯云服务器上快速搭建个人网站?  Laravel怎么使用artisan命令缓存配置和视图  制作企业网站建设方案,怎样建设一个公司网站?  网站制作价目表怎么做,珍爱网婚介费用多少?  Laravel如何创建自定义中间件?(Middleware代码示例)  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel如何实现API速率限制?(Rate Limiting教程)  LinuxCD持续部署教程_自动发布与回滚机制  如何在阿里云域名上完成建站全流程?  Laravel怎么在Controller之外的地方验证数据  Laravel观察者模式如何使用_Laravel Model Observer配置  创业网站制作流程,创业网站可靠吗?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  微信小程序 配置文件详细介绍  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  什么是javascript作用域_全局和局部作用域有什么区别?  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何快速查询网站的真实建站时间?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何彻底卸载建站之星软件?