[Android开发] RxJava2之路二 - 基本使用方法

一、啥是RXJava 1.1 简介
一个在Java Jvm上使用可观测的序列来组成异步的、基于事件的程序的库。
概念很复杂,没所谓。我们先学会使用。
RxJava github地址:
https://github.com/ReactiveX/RxJava
RxJava github地址:
https://github.com/ReactiveX/RxAndroid
建议查看他的wiki,可以看它内容,进行通篇的认识。
1.2 三个概念

  1. Observable:被观察者(主题Subject)
  2. Observer/Subscriber:观察者
  3. Subscribe: 订阅
Observable和Observer 通过subscribe() 方法实现订阅关系
//以前是通过add到被观察者里面进行订阅,然后change来进行通知。 RxJava是一旦订阅就发送。
二、使用三部曲 前提是先依赖了
compile 'io.reactivex.rxjava2:rxandroid:2.0.1' // Because RxAndroid releases are few and far between, it is recommended you also // explicitly depend on RxJava's latest version for bug fixes and new features. compile 'io.reactivex.rxjava2:rxjava:2.0.1'

2.1 方法1: create
2.1.1 创建 被观察者Observable
/** * 定义 被观察者 * @return */ public Observable getObservable(){ return Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { //只要有三个方法onNext、onError、onCompleted//onNext类似观察者模式的change e.onNext("HI"); //发送数据 e.onNext("天平"); //发送数据//发射完成,这种方法需要手动调用onCompleted,才会回调Observer的onCompleted方法 e.onComplete(); //onComplete 和 onError 只调用一个,两个都用只认前面那个 //e.onError(new Exception("错误啦!")); } });

2.1.2 创建观察者 Observer
/** * 生成观察者 * @return */ public Observer getObserver(){ return new Observer() {@Override public void onError(Throwable e) { Log.d(TAG, "onError: "+e.getMessage()); //发生错误调用 }@Override public void onComplete() { Log.d(TAG, "onCompleted: "); //数据接收完成时调用 }/** * * @param d */ @Override public void onSubscribe(Disposable d) { //最先回调,没有执行onNext、onComplete、onError也会回调 Log.d(TAG, "onSubscribe: "+d.toString()); //d.dispose(); //移除订阅关系//d.isDisposed(); //判断取消了订阅关系,为真就是没有订阅,假就是有订阅中 }/** * 被观察者调用onNext这里就会回调 * @param s 参数 */ @Override public void onNext(String s) { Log.d(TAG, "onNext: "+s); //正常接收数据调用 System.out.print(s); //将接收到来自sender的问候"Hi,Weavey!" }}; }

2.1.3 订阅
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Observable observable = getObservable(); Observer observer = getObserver(); //关联观察者和被观察者-> 订阅 observable.subscribe(observer); }

2.2 方法2: create
2.2.1 上面那样创建被观察者
2.2.2 创建观察者
已经包含订阅
observable.subscribe(new Consumer() { @Override public void accept(String s) throws Exception { //这个accept就等于观察者的onNext Log.e(TAG, "accept: "+s); } }, new Consumer() { @Override public void accept(Throwable throwable) throws Exception { //onError } }, new Action() { @Override public void run() throws Exception {} });

2.3 方法3: just
2.3.1 生成被观察者
/** * 生成 被观察者 * @return */ public Observable getObservable(){ //依次发送"just1"和"just2" return Observable.just("just1","just2"); }

2.3.2 定义 观察者
包含了订阅
Observable observable = getObservable(); observable.subscribe(new Consumer() { @Override public void accept(String s) throws Exception { //这个accept就等于观察者的onNext Log.e(TAG, "accept: "+s); } });

2.4 方法4: fromArray
2.4.1 生成被观察者
/** * 生成 被观察者 * @return */ public Observable getObservable(){ return Observable.fromArray("from1","from2","from3"); }

  1. 定义观察者和上面一致
2.5 方法5: fromCallable
2.5.1 生成被观察者
/** * 生成 被观察者 * @return */ public Observable getObservable(){ return Observable.fromCallable(new Callable() { @Override public String call() throws Exception { return "fromCallable"; } }); }

2.5.2 定义观察者和上面一致
【[Android开发] RxJava2之路二 - 基本使用方法】还有其他的看下面的列表。
三. 方法列表
名称 解析
just() 将一个或多个对象转换成发射这个或这些对象的一个Observable
fromArray() 将一个Iterable, 一个Future, 或者一个数组转换成一个Observable
repeat() 创建一个重复发射指定数据或数据序列的Observable
repeatWhen() 创建一个重复发射指定数据或数据序列的Observable,它依赖于另一个Observable发射的数据
create() 使用一个函数从头创建一个Observable
defer() 只有当订阅者订阅才创建Observable;为每个订阅创建一个新的Observable
range() 创建一个发射指定范围的整数序列的Observable
interval() 创建一个按照给定的时间间隔发射整数序列的Observable
timer() 创建一个在给定的延时之后发射单个数据的Observable
empty() 创建一个什么都不做直接通知完成的Observable
error() 创建一个什么都不做直接通知错误的Observable
never() 创建一个不发射任何数据的Observable

    推荐阅读