RxJava简介


Rxjava的Github:https://github.com/ReactiveX/Rxjava

参考:
Android Rxjava:这是一篇 清晰 & 易懂的Rxjava 入门教程:https://www.jianshu.com/p/a406b94f3188

什么是RxJava

一个可观测的序列来组成异步的、基于事件的程序的库。(简单来说:它就是一个实现异步操作的库)

1 Rxjava简介

1.1 为什么要用Rxjava与RxAndroid

  1. Rxjava提高工作效率
  2. Rxjava能优雅的解决复杂的业务场景
  3. Rxjava越来越流行

1.2 需要知道哪些东西

  1. 了解什么事响应式编程
  2. 了解Rxjava 与RxAndroid是什么关系
  3. 了解Rxjava的历史来源
  4. 清楚知道Rxjava与RxAndroid的关系
  5. 学会在项目中如何使用Rxjava与RxAndroid

1.3 Rxjava的相关文档

  1. Rxjava项目地址: https://github.com/ReactiveX/Rxjava

  2. Rxjava文档: https://mcxiaoke.gitbooks.io/rxdocs/content/

  3. Rxjava经典资料:https://github.com/lzyzsd/Awesome-RxJava

1.4 学习Rxjava 的难易程度

RxJava是非常热门的函数响应式编程库,在Android开发中已经非常流行了刚开始上手会有点难,但只要理解了它,不使用RxJava写异步请求的话,就感觉各种不爽

  • 总结: Rxjava有门槛 入行需谨慎

1.5 Rxjava历史来源

Netflix公司遇到了问题,把微软的响应式编程引入到java语言中 ,最终把微软的rx库引入到java中来。

1.6 Rxjava特点

  1. <1M

  2. 轻量级框架

  3. 支持java8

  4. 支持同步异步

  5. 基于观察者模式来展开

1.7 观察者模式

在这里插入图片描述

1.8 Rxjava的观察者模式扩展

  1. onCompleted()事件

  2. onError()事件

  3. 组合不是嵌套,避免毁掉地狱

1.9 RxAndroid

RxAndroid是RxJava的一个针对Android平台的扩展,主要用于 Android 开发。

1.10 Rxjava 使用模板

Observable.from(folders)
    .flatMap((Func1) (folder) -> { Observable.from(file.listFiles()) })
    .filter((Func1) (file) -> { file.getName().endsWith(".png") })//判断是文件否是 图片
    .map((Func1) (file) -> { getBitmapFromFile(file) })  // 将图片文件加载成Bitmap
    .subscribeOn(Schedulers.io())//指定上面的读写文件发生在子线程
    .observeOn(mainThread())//切换至主线程 为后面显示bitmap做准备
    .subscribe((Action1) (bitmap) -> { imageCollectorView.addImage(bitmap) });
//显示到UI

2 操作符简介

  1. 创建操作符

  2. 变换操作符

  3. 过滤操作符

  4. 合并聚合操作符

  5. 条件操作符

  6. 异常操作符

2.1 创建操作符

  1. create

  2. just

  3. fromArray

  4. emty

  5. defer

  6. interval

  7. timer

2.2 变换操作符

作用 将事件类型转换成我们所要的结果类型

  1. Map

  2. FlatMap

  3. GroupBy

  4. Buffer

  5. Scan

  6. Window

2.3 过滤操作符

作用 :对多个事件进行过滤

  1. filter

  2. take

  3. Distinct

  4. ElementAt (指定)

3 背压

背压就是生产者(被观察者)的生产速度大于消费者(观察者)消费速度从而导致的问题,生产速度与消费者速度的一个比值。

举一个简单点的例子:

如果被观察者快速发送消息,但是观察者处理消息的很缓慢,如果没有特定的流(Flow)控制,就会导致大量消息积压占用系统资源,最终导致十分缓慢,当发生大量的网络请求时,网速比较慢的情况下由于不能及时处理请求,会导致请求积压下来,这就是我们要面临的背压。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值