Android之RXJava简单应用一

RxJava简单介绍:

RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,Subscribers处理这些事件。这里的事件可以是任何你感兴趣的东西(触摸事件,web接口调用返回的数据等)

一个Observable可以发出零个或者多个事件,知道结束或者出错。每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。


Rxjava的看起来很想设计模式中的观察者模式,但是有一点明显不同,那就是如果一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。

细节参考大神博客:

https://gank.io/post/560e15be2dca930e00da1083

面试相关:

https://blog.csdn.net/u011311586/article/details/79405891

https://blog.csdn.net/u011311586/article/details/79385242

观察者模式介绍:

参考网址:https://blog.csdn.net/jason0539/article/details/45055233

导包:

    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxjava:2.x.y'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'//转换器,请求结果转换成Model
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'//配合Rxjava 使用

创建一个被观察者:

 /**
                 * 创建一个被观察者observable:用户产生数据,相当于一个发送者。
                 *   1.使用create方法
                 *   2.或者直接new一个observable对象
                 */
                observable=Observable.create(new ObservableOnSubscribe<String>() {
                    @Override
                    public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                        emitter.onNext("还请你兑现约定");
                        emitter.onNext("飞到为我破冰");
                        emitter.onNext("置身冰岛名胜");
                        emitter.onNext("杀不死依存症");
                        emitter.onNext("前尘埋没那段情");
                        emitter.onNext("约誓残念却没有清");
                        emitter.onNext("而你有讲过");
                        emitter.onNext("来年再续旧场景");
                        emitter.onNext("—— 雷克雅未克");

                        emitter.onError(null);
                        emitter.onComplete();
                    }
                });

               /*   observable = new Observable() {
                    @Override
                    protected void subscribeActual(Observer observer) {

                        observer.onNext("还请你兑现约定");
                        observer.onNext("飞到为我破冰");
                        observer.onNext("置身冰岛名胜");
                        observer.onNext("杀不死依存症");
                        observer.onNext("前尘埋没那段情");
                        observer.onNext("约誓残念却没有清");
                        observer.onNext("而你有讲过");
                        observer.onNext("来年再续旧场景");
                        observer.onNext("—— 雷克雅未克");
                    }
                };*/

创建一个观察者:

  /**
                 * 设置一个观察者:用于从事件流里面拾取数据,相当于是一个接收者
                 */
               Observer<String> observer=new Observer<String>() {
                   @Override
                   public void onSubscribe(Disposable d) {

                   }

                   @Override
                   public void onNext(String s) {
                       Log.i("rxJava", "接收到的消息是:" + s);
                       //把接收到的数据展现在textview中:
                       save.setText(s);
                   }

                   @Override
                   public void onError(Throwable e) {
                       Log.i("rxJava", "接收到错误" );
                   }

                   @Override
                   public void onComplete() {
                       Log.i("rxJava", "接收消息完成" );
                   }
               };
                observable.subscribe(observer);

 

猜你喜欢

转载自blog.csdn.net/LoverLeslie/article/details/84064713