登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

楼主: Linhaojian

Android Rxjava :最简单&全面背压讲解 (Flowable

[复制链接]

3

主题

3

帖子

20

安币

初级码农

Rank: 1

发表于 2019-4-15 18:35:01 | 显示全部楼层 |阅读模式
如果对本篇文章感兴趣,请前往,原文地址:http://www.apkbus.com/blog-978770-79877.html

## 1.前言阅读本文需要对Rxjava了解,如果还没有了解或者使用过Rxjava的兄die们,可以观看我另外一篇 [Android Rxjava:不一样的诠释](http://www.apkbus.com/blog-978770-79685.html) 进行学习。```Rxjava背压```:**被观察者发送事件的速度大于观察者接收事件的速度时,观察者内会创建一个无限制大少的缓冲池存储未接收的事件,因此当存储的事件越来越多时就会导致OOM的出现。(注:当subscribeOn与observeOn不为同一个线程时,被观察者与观察者内存在不同时长耗时任务,就会使发送与接收速度存在差异。)**背压例子```javapublic void backpressureSample(){        Observable.create(new ObservableOnSubscribe() {            @Override            public void subscribe(ObservableEmitter e) throws Exception {                int i = 0;                while(true){                    Thread.sleep(500);                    i  ;                    e.onNext(i);                    Log.i(TAG,"每500ms发送一次数据:" i);                }            }        }).subscribeOn(Schedulers.newThread())//使被观察者存在独立的线程执行          .observeOn(Schedulers.newThread())//使观察者存在独立的线程执行          .subscribe(new Consumer() {              @Override              public void accept(Integer integer) throws Exception {                  Thread.sleep(5000);                  Log.e(TAG,"每5000m接收一次数据:" integer);              }          });    }```例子执行效果![上述代码执行效果](//upload-images.jianshu.io/upload_images/10018045-8aaf5495091d9693.gif)![backpressure](//upload-images.jianshu.io/upload_images/10018045-9ab4fe8295e1eb38.png)通过上述例子可以大概了解**背压**是如何产生,因此Rxjava2.0版本提供了 **Flowable** 解决背压问题。本文章就是使用与分析 **Flowable** 是如何解决背压问题。文章中实例  **[linhaojian的Github](https://github.com/linhaojian)**## 2.目录![目录](//upload-images.jianshu.io/upload_images/10018045-f5732a15dc9968d7.png)## 3.简介![简介](//upload-images.jianshu.io/upload_images/10018045-cd898b0f145ddcb2.png)_______________________________________________________________________________## 4.使用与原理详解### 4.1 Flowable 与 Observable 的区别![flowable与observable对比](//upload-images.jianshu.io/upload_images/10018045-47775a3642a48b00.png)上图可以很清楚看出二者的区别,其实```Flowable``` 出来以上的区别之外,它其他所有使用与Observable完全一样。```Flowable``` 的create例子```java public void flowable(){        Flowable.create(new FlowableOnSubscribe() {            @Override            public void subscribe(FlowableEmitter e) throws Exception {                for(int j = 0;j
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表