1.RxJava简介
RxJava 是 ReactiveX 在 Java 上的实现。Observable(观察者) 和 Subscriber(订阅者)是两个主要的类。
Observable :是一个发出数据流或者事件的类;
Subscriber :是一个对这些发出的数据流或者事件,进行处理(采取行动)的类。
RxJava的最核心:Observables(被观察者,事件源),Subscribers(观察者,订阅者)。Observables发出一系列事件,Subscribers接收并处理事件。这些事件可以是任何东西,比如各种类型的数据,点击事件等等。在Subscribers接收事件之前,可以用Operators(操作符)对事件进行各种拦截和操作。
2.创建 Observable
RxJava 使用 Observable.create() 方法来创建一个 Observable ,并为它定义事件触发规则:
Observable observable = Observable.create(newObservable.OnSubscribe() { @Override publicvoidcall(Subscriber subscriber) { subscriber.onNext("Hello"); subscriber.onNext("World"); subscriber.onNext("Keye"); subscriber.onCompleted(); }});
3.创建 Observer
首先来创建一个Observer(观察者),这里观察者仅仅就是打印observable发出的字符串,完成之后通知我们:
Observer observer =newObserver() {@OverridepublicvoidonNext(String s){ Log.d(tag,"onNext: "+ s); }@OverridepublicvoidonCompleted(){ Log.d(tag,"onCompleted"); }@OverridepublicvoidonError(Throwable e){ Log.d(tag,"onError"); }};
除了 Observer接口,RxJava 还创建了一个继承了 Observer 的抽象类:Subscriber。
Subscriber 对 Observer 接口进行了一些扩展,但他们的基本使用方式是完全一样的,这也是以后我们主要用到的一个类:
Subscriber subscriber =newSubscriber() {@OverridepublicvoidonNext(String s){ Log.d(tag,"onNext: "+ s); }@OverridepublicvoidonCompleted(){ Log.d(tag,"onCompleted"); }@OverridepublicvoidonError(Throwable e){ Log.d(tag,"onError"); }};
4.Subscribe 订阅
有了被观察者和观察者,就可以通过subscribe()方法订阅,把他们联系起来;
observable.subscribe(observer);
一旦observer订阅了observable,observable就会调用observer的onNext()、onCompleted()、onError()等方法。