本文是我的小笔记!写得不好的地方或者错误的地方以后会更新。
RXJava在GitHub上的介绍:
RxJava:a library for composing asynchronous and event-based programs using observable sequences for the Java VM //
翻译:RxJava 是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库
RXJava 有什么好的?
提升开发效率,降低维护成本!
Android 的网络库基本被 Retrofit + OkHttp 一统天下了,而配合上响应式编程 RxJava 可谓如鱼得水。
RXJava最大的优点是简洁
但它不止是简洁,而且是随着程序逻辑变得越来越复杂,它依然能够保持简洁。这才是最厉害的地方好不好?
而响应式编程是什么呢?
响应式编程是一种基于异步数据流概念的编程模式。数据流就像一条河:
它可以被观测,被过滤,被操作,或者为新的消费者与另外一条流合并为一条新的流。
应式编程的一个关键概念是事件。事件可以被等待,可以触发过程,也可以触发其它事件。
事件是唯一的以合适的方式将我们的现实世界映射到我们的软件中:
比如: 屋子里太热了 我们开会er 空调!
我现在做的是车联网,车机上有音乐和地图。
在导航中,你的车偏离的规定的航线,他会提示你及时更正路线。
同样的,当我们的音乐app从服务端获取到歌曲数据后,我们需要更新app上展示音乐信息的UI以及播放的声音。
今天,响应式编程最通用的一个场景是UI:
我们的移动App必须做出对网络调用、用户触摸输入和系统弹框的响应。
在这个世界上,软件之所以是事件驱动并响应的是因为现实生活也是如此。
ok 开始了。
先献上GitHub的链接和引入依赖的 Gradle
代码
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 以观察者模式为骨架,在 2.0 中依旧如此。
- Observable ( 被观察者 ) / Observer ( 观察者 )
-
Flowable (被观察者)/ Subscriber (观察者)
大家知道 RXJava 有一个三部曲吗?
** 第一步:初始化 Observable **
** 第二步:初始化 Observer **
** 第三步:建立订阅关系 **
** 第一步 初始化 Observable **
Observable novel=Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("大家好");
emitter.onNext("我是WangZy");
emitter.onNext("我在SY");
emitter.onNext("嘿嘿嘿~!");
emitter.onComplete();
}
});
** 第二步 初始化 Observer **
private Disposable mDisposable;
Observer<String> reader=new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
mDisposable=d;
Log.e(TAG,"onSubscribe");
}
@Override
public void onNext(String value) {
if ("2".equals(value)){
mDisposable.dispose();
return;
}
Log.e(TAG,"onNext:"+value);
}
@Override
public void onError(Throwable e) {
Log.e(TAG,"onError="+e.getMessage());
}
@Override
public void onComplete() {
Log.e(TAG,"onComplete()");
}
};
这时运行程序 logcat中 加入你的 TAG 后 空空如也~~~~ 为什么呢? 因为 三部曲差最后一步 建立订阅关系~~
** 第三步:建立订阅关系 **
// 建立关系
novel.subscribe(reader);
此下是建立订阅关系后 输出的 LOG
今天先到这里~~ 明后天继续学习~~~