美文网首页
浅析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