[RxJava学习]开篇

这周计划开始系统地学习RxJava。

收集到的资料如下:

RxJava源码:https://repo1.maven.org/maven2/io/reactivex/
RxJava中文文档:https://mcxiaoke.gitbooks.io/rxdocs/content/

RxJava各操作符原理介绍:http://rxmarbles.com

精华文章:给 Android 开发者的 RxJava 详解


一、创建Demo工程

我起先是直接将RxJava源码添加到工程里的,结果因为UnsafeAccess.java中的“import sun.misc.Unsafe”找不到而编译不过,只能作罢。

目前的做法是在采用项目依赖的方式引入:

dependencies {
......
    compile 'io.reactivex:rxandroid:1.2.1'
......
}

其中的版本号:1.2.1,可以通过查看maven仓库中的最新版本来修改。 RxJava源码

二、目前的学习所得:

2.1 RxJava是基于观察者模式而设计的一种响应式编程思想;代码层面最直观的印象就是链式操作;

2.2 主要的类有:Observable(被观察对象)、Subscriber(订阅者/观察者)、Scheduler(线程调度)。

2.3 一个原生的RxJava的使用用例如下:

        int mValue = 1;
        Observable.create(new Observable.OnSubscribe<Integer>() {
            @Override
            public void call(Subscriber<? super Integer> subscriber) {
                if (!subscriber.isUnsubscribed()) {
                    // TODO: yourself things
                    // for xample
                    Log.e("chwn", "createOperByCreate>>call:mValue:" + mValue);
                    subscriber.onNext(mValue);
                    subscriber.onCompleted();
                }
            }
        })
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Subscriber<Integer>() {
            @Override
            public void onCompleted() {
    
            }
    
            @Override
            public void onError(Throwable e) {
    
            }
    
            @Override
            public void onNext(Integer integer) {
    
            }
        });
在这个链式操作里, Observable负责串联各个元素;

2.3.1 初始的Observable对象通常是根据咱们常见的单个数据对象、数组等创建的;上面代码中的“Observable.create”语句就是创建了一个初始的Observable对象。这里“create()”方法是RxJava中的创建操作符,“create”只是其中的一种方式;初始的Observable对象创建之后可以链式进行其他操作符处理,如变换、转换、过滤等处理;经过这些操作符处理后会产生新的Observable对象,所以这里才有“初始的Observable对象”之说。

2.3.2 Observable对象提供了两个方法subscribeOn()、observeOn()来允许用户干预处理过程中不同节点所在的线程。

Schedulers.io()和AndroidSchedulers.mainThread()都是调度器的一种,调度器的类型目前有6种,对外表现就是6种方法,常用的有:

Schedulers.io( )、Schedulers.newThread( )、Schedulers.computation( )。AndroidSchedulers.mainThread()是专为Android定义的,指的是UI线程。

2.3.3 Observable对象提供了方法subscribe()与Subscriber建立联系。可以充当观察者的类型,除了Subscriber类型外,还有Action1、Action2、......、Action9、ActionN;Action系列的观察者是简化版的,其提供给Observable对象调用的就只有call()这一个方法;

2.3.4 Subscriber类型的观察者类有三个方法onCompleted()、onError()、onNext;其中onNext是Observable对象用来将处理结果发射给观察者的,可能会被Observable对象多次调用。其入参即是当前的处理结果;其他两个顾名思义,onError是只有在处理遇到异常时才会调用的,一旦调用了则不会再调用其他两个方法;onCompleted()是在处理正常onNext完毕后才被调用的,也是只调用一次。

2.4 RxJava学习的内容,除了理解响应式、函数式编程思想外,最具象的内容就是操作符的学习和使用。Observable是个神奇的对象,只要我们把要处理的数据或者任务想办法转化成Observable对象,就可以逻辑简洁优雅地链式写代码了。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值