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

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

标题什么是RxJava?

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

RxJava的目的是什么?

异步处理

RxJava的优势?

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

RxJava流程图
在这里插入图片描述

这里新建了一个项目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 详解
参考 详解 RxJava2 的线程切换原理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值