用RxJava寫的一個Android的小Demo
之前在微博看到有關RxJava的內容,知道在Android開發中變得越來越流行了,所以找了相關的部落格來看看。其實有初略地看了一點,但是感覺比較難理解,還是先寫一個小Demo來熟悉一下。
下面是我摘錄的一些有關於RxJava的介紹:RxJava最核心的兩個東西是Observable(被觀察者,事件源)和Subscribers(觀察者)。Observable發出一系列的事件,Subscribers處理這些事件,但是subscriber要訂閱對observable進行訂閱。
一個Observable可以發出一個或者多個事件,直到結束或者出錯。每發出一個事件,他會呼叫他的Subscriber的OnNext()的方法,最後呼叫Subscriber.OnComplete()或者Subscriber.OnError()作為結束。
Rxjava的看起來很像設計模式中的觀察者模式,但是有一點明顯不同,那就是如果一個Observerble沒有任何的的Subscriber,那麼這個Observable是不會發出任何事件的。
接下來便是我寫的一個和弱智的HelloWorld的小Demo了,雖然很弱智,就是用TextView輸出Observable發出來的字串,但是還是把整個過程給理解了。
先是在build.gradle中引入依賴
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
//下面兩個即為引入的依賴
compile 'io.reactivex:rxjava:1.0.9'
compile 'io.reactivex:rxandroid:0.24.0'
}
映入依賴後就可以愉快地編寫程式碼了,首先先建立Observable物件
//Observable部分,被觀察者部分
Observable<String> myObservable=Observable.create(new
Observable.OnSubscribe<String>(){
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("John");
subscriber.onCompleted();
}
});
然後建立Subscriber物件響應Observable所發出的事件。上面的Observable所發出的事件為John。
//Subscriber部分,觀察者部分
Subscriber<String> mySubscriber=new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
textView.setText(s);
}
};
最重要的是,將Observable和Subscriber相關聯,即完成subscriber和observable的訂閱
//將觀察者和被觀察者相關聯,完成subscriber對observable的訂閱
myObservable.subscribe(mySubscriber);
用手機對Android程式進行除錯 輸出John
即完成了HelloWorld的Rxjava的小Demo。