1.RxJava簡介
RxJava?是 ReactiveX 在 Java 上的實現(xiàn)。Observable(觀察者) 和 Subscriber(訂閱者)是兩個主要的類。
Observable?:是一個發(fā)出數(shù)據(jù)流或者事件的類;
Subscriber?:是一個對這些發(fā)出的數(shù)據(jù)流或者事件,進行處理(采取行動)的類。
RxJava的最核心:Observables(被觀察者,事件源),Subscribers(觀察者,訂閱者)。Observables發(fā)出一系列事件,Subscribers接收并處理事件。這些事件可以是任何東西,比如各種類型的數(shù)據(jù),點擊事件等等。在Subscribers接收事件之前,可以用Operators(操作符)對事件進行各種攔截和操作。
2.創(chuàng)建 Observable?
RxJava 使用 Observable.create() 方法來創(chuàng)建一個 Observable ,并為它定義事件觸發(fā)規(guī)則:
Observable observable = Observable.create(newObservable.OnSubscribe() {??? @Override??? publicvoidcall(Subscriber subscriber) {??????? subscriber.onNext("Hello");??????? subscriber.onNext("World");??????? subscriber.onNext("Keye");??????? subscriber.onCompleted();??? }});
3.創(chuàng)建 Observer
首先來創(chuàng)建一個Observer(觀察者),這里觀察者僅僅就是打印observable發(fā)出的字符串,完成之后通知我們:
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 還創(chuàng)建了一個繼承了?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()方法訂閱,把他們聯(lián)系起來;
observable.subscribe(observer);
一旦observer訂閱了observable,observable就會調(diào)用observer的onNext()、onCompleted()、onError()等方法。