RxJava 系列之基本语法(1)

xiaoxiao2021-02-28  87

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使用方法之前,先说明下几个概念,最核心的应该就是观察者和被观察者了。

观察者:Observer被观察者:Observable订阅: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就可以使用了。

转载请注明原文地址: https://www.6miu.com/read-72057.html

最新回复(0)