iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
Mobile Development

android studio 30天學習筆記系列 第 8

android studio 30天學習筆記-day 8-基本介紹rxjava2

RxJava2是一套處理非同步(asynchronous)事件的library,這個library是基於觀察者的模式來設計的。

觀察者模式

定義了物件之間的一對多關係,如此一來,當一個物件改變狀態,其他相依者都會收到通知並自動被更新

舉例來說:大家在youtube看影片時,都會訂閱一些自己喜歡看的youtuber的影片,假設該youtuber為被觀察者,而自己是觀察者,平時不會特別去關注該youtuber的影片是否更新,但只要當該youtuber有新的影片,有訂閱該youtuber的人都會收到通知。

RxJava優點
1.方便的處理線程切換的問題
2.當邏輯代碼越來越複雜,RxJava仍可保持可讀性

RxJava基本使用
第一步:加入套件

    implementation 'io.reactivex.rxjava2:rxjava:2.2.6'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'

第二步:創建Observable(被觀察者)

Observable<String> note=Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                //ObservableEmitter:Emitter翻為發送器,發送訊息,有三種發送方法:void onNext(T value)、onError(Throwable error)、onComplete()
                emitter.onNext("Hello");
                emitter.onNext("This is Eles's note");
                emitter.onNext("Thanks for watching");
                emitter.onComplete();
            }
        });

第三步:創建Observer(觀察者)

Observer<String> reader =new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) { //事件還未發送前先調用,Disposable可用來做取消訂閱
                Log.d(TAG,"onSubscribe:");
            }

            @Override
            public void onNext(String s) { //處理的事件
                Log.d(TAG,"onNext:"+ s);

            }

            @Override
            public void onError(Throwable e) { //事件處理過程中出現異常情況時,會調用onError(),同時終止事件發送
                Log.d(TAG,"onError:"+ e);

            }

            @Override
            public void onComplete() { //事件處理完成,當onNext()發送完畢後調用
                Log.d(TAG,"onComplete()");

            }
        };

第四步:創建subscribe(建立訂閱關係)

note.subscribe(reader); //note被reader訂閱

log結果
https://ithelp.ithome.com.tw/upload/images/20210721/201389665ZZvzD02yY.png

明天會補充rxjava其餘部分


上一篇
android studio 30天學習筆記-day 7-介紹okhttp
下一篇
android studio 30天學習筆記-day 9-rxjava2補充
系列文
android studio 30天學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言