RxAndroid 源码解析一

参考学习:http://blog.csdn.net/starsliu/article/details/51038275

RxAndroid 源码解析一

被观察者(主题,订阅内容执行者)

Observable 类

OnSubscribe  继承 extends Action1

                    Action1  extends Action

                  Action  extends  Function

观察者(事件,订阅事件)

Observer  接口

Subscriber 实现 implements Observer


撸代码

Observable 类核心代码

public final static Observable just(finalTvalue) {

            return ScalarSynchronousObservable.create(value);

}

ScalarSynchronousObservable 类核心代码

public final classScalarSynchronousObservable extends Observable {

            public static final ScalarSynchronousObservable create(T t) {

                  return newScalarSynchronousObservable(t);

            }

private final T t;

protected  ScalarSynchronousObservable(finalT t) {

           //都会构造一个OnSubscribe,通过这个来传递参数t,调用本事的方法call(),调用参数订阅者方法

            super(new OnSubscribe() {

           @Override

             public void call(Subscriber s) {

                  s.onNext(t);

                 s.onCompleted();

      }

});

this.t= t;

}


再回到Observable 类核心代码

public final Subscription subscribe(final  Action1 onNext) {

         if(onNext ==null) {

                   throw newIllegalArgumentException("onNext can not be null");

        }

//看重点吧Action1封装通过观察者Subscriber来调用

        return subscribe(new   Subscriber() {

                             @Override

                              public final void   onCompleted() {

                          }

                           @Override

                       public final void  onError(Throwable e) {

                             throw new  OnErrorNotImplementedException(e);

                      }

                    @Override

                  public final void  onNext(Targs) {

                                  onNext.call(args);

                      }

                 });

}

public final   Subscription subscribe(Subscriber subscriber) {

          return   Observable.subscribe(subscriber,this);

}


private static Subscription subscribe(Subscriber subscriber, Observable observable) {

            try{

                 //本处只显示核心代码

                      hook.onSubscribeStart(observable, observable.onSubscribe).call(subscriber);

               return  hook.onSubscribeReturn(subscriber);

RxJavaObservableExecutionHook类核心代码

public abstract class  RxJavaObservableExecutionHook {

          public OnSubscribe onSubscribeStart(Observable observableInstance,finalOnSubscribe onSubscribe) {

             // pass-thru by default

            return  onSubscribe;

}

总结:最好发现是OnSubscribe(action)-----》Subscriber(action)



第一次用写文字,程序员有什么好的写文字啊,看到推荐下啊,这个代码显示太难看了

你可能感兴趣的:(RxAndroid 源码解析一)