RxJava2.x.y学习之路(一)

       本来买了本Android进阶之路,里面有写到RxJava的内容,准备跟着学习来着,结果里面的内容有点老了,rxjava都2.x.y了。所以只能到网上找找资料了。

       推荐一个简书地址,感觉还不错,给初学者的RxJava2.0教程


      大致说一下第一次看到RxJava的想法,大概就是就是订阅和被订阅,和EventBus有点像。最终是实现异步回调。

还是先来个HelloWorld吧,方便我自己记忆和理解。

      如何使用RxJava,个人觉得先理解一下单次的意思比较好。

Observable
可观察
Observer
观察者

知道这两个单次的意思后,就可以使用RxJava了。刚刚推荐的那个简书地址,里面有图文解释,可以先去了解一下。

首先创建一个可以观察的对象,create()中传入了一个新的对象,字面意思为,当可被观察的对象订阅观察者的时候执行。


    /**
     * 1.Observable 可以被观察的事物
     */
    Observable observable = Observable.create(new ObservableOnSubscribe() {
        @Override
        public void subscribe(ObservableEmitter emitter) throws Exception {
            emitter.onNext(1);
            emitter.onNext(2);
            emitter.onNext(3);
            emitter.onComplete();
        }
    });

然后创建一个观察者,


    /**
     * 2.观察者
     */
    Observer mObserver = new Observer() {
        @Override
        public void onSubscribe(Disposable d) {
            Log.i(TAG, "onSubscribe: 在订阅的时候");
        }

        @Override
        public void onNext(Integer integer) {
            Log.i(TAG, "onNext: "+integer.toString());
        }

        @Override
        public void onError(Throwable e) {
            Log.e(TAG, "onError: ",e.getCause());
        }

        @Override
        public void onComplete() {
            Log.i(TAG, "onComplete: ");
        }
    };

然后两者可以建立连接,完成异步回调。

        //观察者和被观察者之间建立联系,由被观察者决定谁去谁去观察自己
        observable.subscribe(mObserver);

运行的结果:

05-02 08:41:00.342 2802-2802/com.magic.rxjava I/MainActivity: onSubscribe: 在订阅的时候
05-02 08:41:00.342 2802-2802/com.magic.rxjava I/MainActivity: onNext: 1
05-02 08:41:00.342 2802-2802/com.magic.rxjava I/MainActivity: onNext: 2
05-02 08:41:00.342 2802-2802/com.magic.rxjava I/MainActivity: onNext: 3
05-02 08:41:00.342 2802-2802/com.magic.rxjava I/MainActivity: onComplete: 

 

最后建立连接的时候,需要注意的是  可被观察的对象主动去找一个观察者,即订阅。

 

...

我感觉这篇博客应该只有我自己看得懂了...各位老铁们还是去看看我贴的那个连接,写的比较好。

 


20190513补充:

今天又往后学习了一点,感觉这个可被观察和观察者需要一个角色定位更容易让人理解。

可以理解为可观察的人是指挥官,观察者是执行士兵。由可以观察的事物发送命令,由观察者执行。

你可能感兴趣的:(RxJava)