1. 程式人生 > >用RxJava寫的一個Android的小Demo

用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。