RXJava 第一天 学习笔记

本文是我的小笔记!写得不好的地方或者错误的地方以后会更新。

RXJava在GitHub上的介绍:

             RxJava:a library for composing asynchronous and event-based programs using observable sequences for the Java VM //

             翻译:RxJava 是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库

RXJava 有什么好的?

        提升开发效率,降低维护成本!

Android 的网络库基本被 Retrofit + OkHttp 一统天下了,而配合上响应式编程 RxJava 可谓如鱼得水。

RXJava最大的优点是简洁

        但它不止是简洁,而且是随着程序逻辑变得越来越复杂,它依然能够保持简洁。这才是最厉害的地方好不好?

而响应式编程是什么呢?

        响应式编程是一种基于异步数据流概念的编程模式。数据流就像一条河:

        它可以被观测,被过滤,被操作,或者为新的消费者与另外一条流合并为一条新的流。

        应式编程的一个关键概念是事件。事件可以被等待,可以触发过程,也可以触发其它事件。

        事件是唯一的以合适的方式将我们的现实世界映射到我们的软件中:

        比如: 屋子里太热了 我们开会er 空调!

                    我现在做的是车联网,车机上有音乐和地图。

                    在导航中,你的车偏离的规定的航线,他会提示你及时更正路线。

                    同样的,当我们的音乐app从服务端获取到歌曲数据后,我们需要更新app上展示音乐信息的UI以及播放的声音。

        今天,响应式编程最通用的一个场景是UI:

                    我们的移动App必须做出对网络调用、用户触摸输入和系统弹框的响应。

                    在这个世界上,软件之所以是事件驱动并响应的是因为现实生活也是如此。

 

ok 开始了。

先献上GitHub的链接和引入依赖的 Gradle 代码

https://github.com/ReactiveX/RxJava 
https://github.com/ReactiveX/RxAndroid 

这是引入的依赖:

compile 'io.reactivex:rxjava:1.0.14' 
compile 'io.reactivex:rxandroid:1.0.1' 

(版本号是文章发布时的最新稳定版)

RxJava 作为一个工具库,使用的就是通用形式的观察者模式。

RxJava 以观察者模式为骨架,在 2.0 中依旧如此

  • Observable ( 被观察者 ) / Observer ( 观察者 )
  • Flowable (被观察者)/ Subscriber (观察者)

大家知道 RXJava 有一个三部曲吗?

** 第一步:初始化 Observable **
** 第二步:初始化 Observer **
** 第三步:建立订阅关系 **

** 第一步 初始化 Observable **

Observable novel=Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                emitter.onNext("大家好");
                emitter.onNext("我是WangZy");
                emitter.onNext("我在SY");
                emitter.onNext("嘿嘿嘿~!");
                emitter.onComplete();
            }
        });

** 第二步 初始化 Observer **

private Disposable mDisposable;
Observer<String> reader=new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                mDisposable=d;
                Log.e(TAG,"onSubscribe");
            }

            @Override
            public void onNext(String value) {
                if ("2".equals(value)){
                    mDisposable.dispose();
                    return;
                }
                Log.e(TAG,"onNext:"+value);
            }

            @Override
            public void onError(Throwable e) {
                Log.e(TAG,"onError="+e.getMessage());
            }

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

这时运行程序 logcat中 加入你的 TAG 后 空空如也~~~~ 为什么呢?  因为 三部曲差最后一步 建立订阅关系~~

** 第三步:建立订阅关系 **

 // 建立关系
 novel.subscribe(reader);

 

此下是建立订阅关系后 输出的 LOG

今天先到这里~~  明后天继续学习~~~

 

 

 

©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页