RxJava 源码走读之Observable.create()和subscribe()

本文深入剖析RxJava的源码,重点探讨`Observable.create(OnSubscribe)`和`Observable.subscribe(Observer)`的实现过程。通过分析,揭示了`OnSubscribe`在`Observable`构造中的作用,以及`subscribe()`方法内部如何处理`Observer`和`Subscriber`,特别是`SafeSubscriber`的使用以及异常处理机制。
摘要由CSDN通过智能技术生成

RxJava 源码剖析

最简单的Observable.subscribe(Observable)

看一下我们的例子

 Observable.create(new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> subscriber) {

            }
        }).subscribe(new Observer<String>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(String s) {

            }
        });

在这个方法中,我们通过Observable.create()创建一个Observable对象,然后通过subscribe()方法订阅。

Obsevable.create(OnSubscribe)

那么,我们先看一下Observable.create()的源码

  public static <T> Observable<T> create(OnSubscribe<T> f) {
        return new Observable<T>(hook.onCreate(f));
    }

hook.onCreate(f)源码

  public <T> OnSubscribe<T> onCreate(OnSubscribe<T> f) {
        return f;
    }

onCreate中并没有做什么,只是将其传入的参数再返回,感觉好无聊啊,什么都没有做,那么hookObservablehook的生命


    static final RxJavaObservableExecutionHook hook = RxJavaPlugins.getInstance().getObservableExecutionHook();

可以看到hook对象是一个静态的final对象,暂时我们无需管他是干什么的。

然后调用了Observable的构造函数并返回,看一下其构造方法

  protected Observable(OnSubscribe<T> f) {
        this.onSubscribe = f;
    }

Observable中就干了一件事情,他将传入的OnSubscribe赋值当前类的字段中保存。

那么我们可以总结Observable.create()就是调用Observable的构造方法,保存传入的Obsu

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值