Android之RXJava简单应用一

本文深入解析了RxJava的核心概念,包括Observables和Subscribers的角色与工作流程,以及如何通过RxJava实现事件的生成和处理。同时,文章提供了详细的代码示例,展示了如何创建Observable和Observer,以及它们之间的交互过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.youkuaiyun.com/u011311586/article/details/79405891

https://blog.youkuaiyun.com/u011311586/article/details/79385242

 

观察者模式介绍:

参考网址:https://blog.youkuaiyun.com/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);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值