RxJava 系列之基本语法(1)

RxJava可以说现在是相当的火。前段时间面试也被经常问到,由于以前项目中没用到过,所以一直只是听说这个东西,只是大概了解了一下,所以这方面问题回答的不是很好。那RxJava到底是什么呢?

官方解释:RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.

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

上面的解释你可能一脸懵逼,但是没关系,我们接下来一起来学习下。

Github地址:
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 在 GitHub 主页上的自我介绍是 “a library for composing asynchronous and event-based programs using observable sequences for the Java VM”(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava ,概括得非常精准。

然而,对于初学者来说,这太难看懂了。因为它是一个『总结』,而初学者更需要一个『引言』。

其实, RxJava 的本质可以压缩为异步这一个词。说到根上,它就是一个实现异步操作的库,而别的定语都是基于这之上的。

RxJava用法


在介绍RxJava使用方法之前,先说明下几个概念,最核心的应该就是观察者和被观察者了。

  1. 观察者:Observer
  2. 被观察者:Observable
  3. 订阅:subscribe

(1) hello,world

Observer<String> observer = new Observer<String>() {
            @Override
            public void onCompleted() {
                Log.e(TAG, "onCompleted...");
            }

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

            @Override
            public void onNext(String s) {
                Log.e(TAG, "onNext: s = " + s);
            }
        };
Observable.create(new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> subscriber) {
                subscriber.onNext("hello");
                subscriber.onNext("world");
                subscriber.onCompleted();
            }
        }).subscribe(observer);

logcat如下:

06-08 09:56:51.768 27699-27699/com.example.boguang.demo E/RxAndroidActivity: onNext: s = hello
06-08 09:56:51.768 27699-27699/com.example.boguang.demo E/RxAndroidActivity: onNext: s = world
06-08 09:56:51.768 27699-27699/com.example.boguang.demo E/RxAndroidActivity: onCompleted...

Observable不可以直接实例化,因为构造方法是protected的

protected Observable(OnSubscribe<T> f) {
        this.onSubscribe = f;
}

(2) from方法创建Observable

String[] datas = new String[]{"wms1993","love","ranran","1314"};
Observable.from(datas).subscribe(observer);

对应logcat:

06-08 09:38:30.985 26929-26929/com.example.boguang.demo E/RxAndroidActivity: onNext: s = wms1993
06-08 09:38:30.985 26929-26929/com.example.boguang.demo E/RxAndroidActivity: onNext: s = love
06-08 09:38:30.985 26929-26929/com.example.boguang.demo E/RxAndroidActivity: onNext: s = ranran
06-08 09:38:30.985 26929-26929/com.example.boguang.demo E/RxAndroidActivity: onNext: s = 1314
06-08 09:38:30.985 26929-26929/com.example.boguang.demo E/RxAndroidActivity: onCompleted...

当你有一个数组对象的时候,通过from方法创建Observable应该是最简单的,调用from之后然后subscribe一下,这样RxJava就可以使用了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值