android之RxJava开发
来源:互联网 发布:java部分中文乱码 编辑:程序博客网 时间:2024/06/05 01:06
序言
首先放上 GitHub 链接和引入依赖的 gradle 代码:
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的API和原理
原理:拓展的观察者模式
RxJava 有四个基本概念:Observable (可观察者,即被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer。
与传统观察者模式不同, RxJava 的事件回调方法除了普通事件 onNext() (相当于 onClick() / onEvent())之外,还定义了两个特殊的事件:onCompleted() 和 onError()。
RxJava的实现步骤:
RxJava 的基本实现主要有三点:
1) 创建 Observer
Observer 即观察者,它决定事件触发的时候将有怎样的行为。
2) 创建 Observable
Observable 即被观察者,它决定什么时候触发事件以及触发怎样的事件。 RxJava 使用 create() 方法来创建一个 Observable ,并为它定义事件触发规则:
Observable observable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("Hello"); subscriber.onNext("Hi"); subscriber.onNext("Aloha"); subscriber.onCompleted(); }});
这样,由被观察者调用了观察者的回调方法,就实现了由被观察者向观察者的事件传递,即观察者模式。
create() 方法是 RxJava 最基本的创造事件序列的方法。基于这个方法, RxJava 还提供了一些方法用来快捷创建事件队列,例如:
just(T…): 将传入的参数依次发送出来。
Observable observable = Observable.just("Hello", "Hi", "Aloha");// 将会依次调用:// onNext("Hello");// onNext("Hi");// onNext("Aloha");// onCompleted();
from(T[]) / from(Iterable<`? extends T>):将传入的数组或 Iterable 拆分成具体对象后,依次发送出来。
String[] words = {"Hello", "Hi", "Aloha"};Observable observable = Observable.from(words);// 将会依次调用:// onNext("Hello");// onNext("Hi");// onNext("Aloha");// onCompleted();
上面 just(T…) 的例子和 from(T[]) 的例子,都和之前的 create(OnSubscribe) 的例子是等价的。
3) Subscribe (订阅)
创建了 Observable 和 Observer 之后,再用 subscribe() 方法将它们联结起来,整条链子就可以工作了。代码形式很简单:
observable.subscribe(observer);// 或者:observable.subscribe(subscriber);
正如前面所提到的,Observer 和 Subscriber 具有相同的角色,而且 Observer 在 subscribe() 过程中最终会被转换成 Subscriber 对象.
拓展:
给 Android 开发者的 RxJava 详解
RxJava入门指南· ReactiveX文档中文翻译
RxJava|专题 - 泡在网上的日子
使用RxJava 提升用户体验
使用RxJava构造Android清晰框架
RxJava Essentials 中文翻译版
- android之RxJava开发
- Android 开发之RxJava 详解
- Android开发之浅谈RxJava(一)
- Android开发之Retrofit+RxJava的使用
- Android RxJava 使用RxJava开发
- Android 开发RxJava 详解
- Android 开发 RxJava 详解
- Android之RxJava(一)
- Android RxJava 之FlatMap()
- Android之RxJava 详解
- Android 开发 RxJava / RxAndroid 详解
- Android 开发的 RxJava 详解
- RxJava Android 开发全家桶
- RxJava Android 开发全家桶
- RxJava+Retrofit的Android开发
- Android开发---RxJava整理《二》
- Android开发--Rxjava整理《三》
- Android开发--RxJava整理《四》
- 如何在Android引用第三方字体文件?
- 作业四1002
- Android ListView使用BaseAdapter与ListView的优化
- 长度是怎样炼成的(三)
- Lab 4:尝试bootloader
- android之RxJava开发
- 【剑指offer】排序数组合并
- 微信分享到朋友圈失败,分享给朋友等正常
- TortoiseSVN 简单使用说明(老手请绕弯)
- 长度是怎样炼成的(四)
- 8086汇编控制8255实现开关控制LED以及跑马灯
- android studio 集成腾讯信鸽实现特定账号推送
- iOS根据键盘弹出计算键盘高度
- loadrunner进阶——学习二、制定负载测试计划