part04_Rxjava入门

作者:IT魔幻师
博客:www.huyingzi.top
转载请注明出处:https://www.jianshu.com/p/88e368311f8b


一、前言

Rxjava是基于事件流 开发的响应式编程框架,适用于复杂业务场景,rxandroid是rxjava的一个安卓扩展版,rxandroid里面扩展了一些Android组件,开发的时候我们将两个库都引入.

  • Rxjava项目地址: https://github.com/ReactiveX/Rxjava
  • Rxjava文档: https://mcxiaoke.gitbooks.io/rxdocs/content/
  • Rxjava经典资料:https://github.com/lzyzsd/Awesome-RxJava
  • 使用
    implementation "io.reactivex.rxjava2:rxandroid:2.1.0"
    implementation "io.reactivex.rxjava2:rxjava:2.2.1"
    

二、被观察者,观察者,订阅的关系

  • 依次创建被观察者,观察者,最后发起订阅
   @Test
    public void testObservable() {
        System.out.println("-----被观察者 testCrteate  创建一个事件!");
        //创建被观察者
        Observable mObservable=  Observable.create(new ObservableOnSubscribe() {
            @Override
            public void subscribe(ObservableEmitter emitter) throws Exception {
                System.out.println("通知:被观察者 subscribe  发送通知给观察者");
                //调用此方法后观察者就会在onNext中收到通知,不调用就不会通知观察者
                emitter.onNext("你好我是你爸爸");
            }
        });

        System.out.println("-----观察者 testCrteate  创建一个观察者观察事件!");
        //观察者  线程调度  泛型
        Observer mObserver = new Observer(){

            @Override
            public void onSubscribe(Disposable d) {
                System.out.println("通知:观察者 onSubscribe  告诉被观察者有人订阅了事件");
            }

            @Override
            public void onNext(String s) {
                System.out.println("通知:观察者收到通知 onNext  :"+s);
            }

            @Override
            public void onError(Throwable e) {
                System.out.println("通知:观察者 onError  ");
            }

            @Override
            public void onComplete() {
                System.out.println("通知:观察者 onComplete  ");
            }
        };

        System.out.println("-----订阅 subscribe  订阅事件!");
        //订阅 将观察者通过subscribe提交到被观察者中
        mObservable.subscribe(mObserver);
    }
  • 结果输出


    事件执行结果

三、链式调用,创建被观察者时直接发起订阅,将被观察者作为参数传递

@Test
    public void testObservable2() {
        Observable.create(new ObservableOnSubscribe() {
            @Override
            public void subscribe(ObservableEmitter emitter) throws Exception {
                emitter.onNext("我是你爸爸");
            }
        }).subscribe(new Observer() {
            @Override
            public void onSubscribe(Disposable d) {
                
            }

            @Override
            public void onNext(String s) {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });
    }

四、最终进化-使用操作符

 @Test
    public void testjust() {
        //just是create的快捷创建操作
        Observable.just("我是你爸爸","我是你爸爸2").subscribe(new Observer() {
            @Override
            public void onSubscribe(Disposable d) {
            }

            @Override
            public void onNext(String s) {
                //此处会依次收到just参数传递过来的值
            }

            @Override
            public void onError(Throwable e) {
            }

            @Override
            public void onComplete() {
            }
        });
    }

你可能感兴趣的:(part04_Rxjava入门)