美文网首页
浅析RxJava 版本2.2.9 《一》基础使用

浅析RxJava 版本2.2.9 《一》基础使用

作者: 辞令 | 来源:发表于2019-06-18 10:52 被阅读0次

RxJava已经出来很长时间,一直没有去深入的看看它的源码,最近抽时间一起来窥探一下它的精彩。总结不足之处,希望能够指出,一起进步。

标题什么是RxJava?

RxJava通过观察者模式基于事件订阅的异步执行的类库。

RxJava的目的是什么?

异步处理

RxJava的优势?

与AsyncTask和Handler对比
优势:逻辑简洁

这里新建了一个项目LearningRxJava
集成步骤:

  implementation "io.reactivex.rxjava2:rxjava:2.2.9"

allprojects中添加

   maven { url 'https://jitpack.io' }

RxJava的组成部分

RxJava分四个部分组成
Observable:被观察者。
Observer:观察者。
subscribe:订阅,通过Observable的subscribe()方法进行订阅。
Subscriber:观察者 与Observer类似,不同的是 Subscriber要与Flowable(另一种被观察者)联合使用。

第一种简单使用方式:

    // 创建观察者
    Subscriber observer = new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.e("observer", "observer onSubscribe");
            }

            @Override
            public void onNext(String s) {
                Log.e("observer", "observer onNext " + s);
            }

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

            @Override
            public void onComplete() {
                Log.e("observer", "observer onComplete");
            }
        };
    // 创建被观察者
    // 第一种方法
    Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                emitter.onNext("张三来了");
                emitter.onComplete();
            }
        });
    //建立关系
    observable.subscribe(observer);
    
   // 第二种方法
   Observable<String> observable1 = Observable.just("李四来了");
   //建立关系
   observable1.subscribe(observer);

输出结果:

2019-06-18 10:44:19.020 10254-10254/? E/observer: observer onSubscribe
2019-06-18 10:44:19.020 10254-10254/? E/observer: observer onNext 张三来了
2019-06-18 10:44:19.020 10254-10254/? E/observer: observer onComplete
2019-06-18 10:44:19.020 10254-10254/? E/observer: observer onSubscribe
2019-06-18 10:44:19.020 10254-10254/? E/observer: observer onNext 李四来了
2019-06-18 10:44:19.020 10254-10254/? E/observer: observer onComplete

第二种简单使用方式:

 // 创建观察者
 Subscriber subscriber = new Subscriber() {
            @Override
            public void onSubscribe(Subscription s) {
                Log.e("observer", "subscriber onSubscribe");
                s.request(Long.MAX_VALUE);
            }

            @Override
            public void onNext(Object o) {
                Log.e("observer", "subscriber onNext " + o.toString());
            }

            @Override
            public void onError(Throwable t) {
                Log.e("observer", "subscriber onError");
            }

            @Override
            public void onComplete() {
                Log.e("observer", "subscriber onComplete");
            }
        };
// 创建被观察者
 // 第一种方法
Flowable<String> flowable = Flowable.create(new FlowableOnSubscribe<String>() {
            @Override
            public void subscribe(FlowableEmitter<String> emitter) throws Exception {
                emitter.onNext("王五来了");
                emitter.onComplete();
            }
        }, BackpressureStrategy.BUFFER);

 //建立关系
 flowable.subscribe(subscriber);
 
 // 第二种方法

 Flowable<String> flowable1 = (Flowable<String>) Flowable.just("赵六来了");
 flowable1.subscribe(subscriber);

输出结果:

2019-06-18 10:44:19.037 10254-10254/? E/observer: subscriber onSubscribe
2019-06-18 10:44:19.038 10254-10254/? E/observer: subscriber onNext 王五来了
2019-06-18 10:44:19.038 10254-10254/? E/observer: subscriber onComplete
2019-06-18 10:44:19.038 10254-10254/? E/observer: subscriber onSubscribe
2019-06-18 10:44:19.038 10254-10254/? E/observer: subscriber onNext 赵六来了
2019-06-18 10:44:19.038 10254-10254/? E/observer: subscriber onComplete

通过上边这个小例子,我们清楚的知道它是怎么实现的。

参考 深入浅出RxJava(一:基础篇)
参考 RxJava2.0——从放弃到入门
参考 RxJava2.0的使用详解
参考 给 Android 开发者的 RxJava 详解

相关文章

网友评论

      本文标题:浅析RxJava 版本2.2.9 《一》基础使用

      本文链接:https://www.haomeiwen.com/subject/bxbxqctx.html