Android响应式编程——RxJava3框架的使用(三)

文章导航

Android响应式编程——RxJava3框架的使用(一)

Android响应式编程——RxJava3框架的使用(二)

Android响应式编程——RxJava3框架的使用(三)

Android响应式编程——RxJava3框架的使用(四)

背压

当上下游在不同的线程中,通过Observable发射,处理,响应数据流时,如果上游发射数据的速度快于下游接收处理数据的速度,这样对于那些没来得及处理的数据就会造成积压,这些数据既不会丢失,也不会被垃圾回收机制回收,而是存放在一个异步缓存池中,如果缓存池中的数据一直得不到处理,越积越多,最后就会造成内存溢出,这便是响应式编程中的背压(backpressure)问题。

  1. 在订阅的时候如果使用FlowableSubscriber,那么需要通过s.request(Long.MAX_VALUE)去主动请求上游的数据项。如果遇到背压报错的时候,FlowableSubscriber默认已经将错误try-catch,并通过onError()进行回调,程序并不会崩溃;
  2. 在订阅的时候如果使用Consumer,那么不需要主动去请求上游数据,默认已经调用了s.request(Long.MAX_VALUE)。如果遇到背压报错、且对Throwable的Consumer没有new出来,则程序直接崩溃;
  3. 背压策略的上游的默认缓存池是128。

RxJava基本响应类型

1.Observable

Observable是最基本的响应类型,但不支持背压,基本上适用大多数的应用场景

public static void observable() {
   
    //创建被观察者
    Observable.create(new ObservableOnSubscribe<String>() {
   
        @Override
        //默认在主线程里执行该方法
        public void subscribe(@NonNull ObservableEmitter<String> e) throws Exception {
   
            e.onNext("1");
            e.onNext("2");
            e.onNext("3");
            e.onNext("4");
            e.onComplete();
        }
    })
            //将被观察者切换到子线程
            .subscribeOn(Schedulers.io())
            //将观察者切换到主线程  需要在Android环境下运行
            //.observeOn(AndroidSchedulers.mainThread())
            //创建观察者并订阅
            .subscribe(new Observer<String>() {
   
                @Override
                public void onSubscribe(Disposable d) {
   

                }

                @Override
                public void onNext(String s) {
   
                    System.out.println("onNext=" + s);
                }

                @Override
                public void o
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值