Android Rxjava 的源码解析 (四) RxJava2 基本元素 (背压)

小案例

        Flowable.create(new FlowableOnSubscribe<String>() {
            @Override
            public void subscribe(FlowableEmitter<String> e) throws Exception {
                if (!e.isCancelled()){
                    e.onNext("test");
                    e.onComplete();
                }
            }
        }, BackpressureStrategy.DROP).subscribe(new Subscriber<String>() {
            @Override
            public void onSubscribe(Subscription s) {
                s.request(Long.MAX_VALUE);
                System.out.println("onSubscribe");
            }

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

            @Override
            public void onError(Throwable t) {
                System.out.println("onError");
            }

            @Override
            public void onComplete() {
                System.out.println("onComplete");
            }
        });

基本元素

Flowable

  • 易流动的 — 被观察者,支持背压
  • 通过Flowable创建一个可观察的序列(create方法)
  • 通过 Subscribe 注册一个观察者

Subscriber

  • 一个单独的接口,和Observer的方法类似
  • 作为Flowable的 subscribe方法的参数

Subscription

  • 订阅,和Rxjava1 的有所不同
  • 支持背压,有用于背压的request方法

FlowableOnSubscribe

  • 当订阅时会触发此接口调用
  • 在Flowable内部,实际作用是向观察者发射数据

Emitter

  • 一个发射数据的接口,与Observer的方法类似
  • 本质是对Observer和Subscriber的包装

脑图地址

https://www.processon.com/view/link/5afbf867e4b096c6eeb35454

猜你喜欢

转载自blog.csdn.net/qq_30889373/article/details/80340640