iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Mobile Development

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

android studio 30天學習筆記-day 9-rxjava2補充

  • 分享至 

  • xImage
  •  

昨天介紹rxjava2簡單的寫法,今天會介紹rxjava2其他的做法

Observables

RxJava提供多種Observables,主要差異在於callback的類型不同,首先:

1.Observable

不支持back pressure,可在onNext(String s)多次執行,完成就調用onComplete(),在onNext(String s)執行期間發生異常則調用onError(Throwable e)

Observable.fromCallable(new Callable<String>() { 
            @Override
            public String call() throws Exception {
                return null;
            }
        }).subscribe(new DisposableObserver<String>() {
            @Override
            public void onNext(String s) {
                
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });

2.Flowable

用法跟Observable差不多,支持back pressure,在被觀察者發送事件的速度快於觀察者的處理速度時,降低被觀察者發送事件的速度。

3.Completable

更新資料時,只需要知道資料的更新是成功或者是失敗,無回傳值,只處理 onError(Throwable e)onComplete()的事件

Completable.fromAction(new Action() { 

            @Override
            public void run() throws Exception {

            }
        }).subscribe(new DisposableCompletableObserver() {
            @Override
            public void onComplete() {

            }

            @Override
            public void onError(Throwable e) {

            }
        });

4.Single

回傳值成功就調用onSuccess(String s),否則調用onError(Throwable e)

 Single.fromCallable(new Callable<String>() {
            @Override
            public String call() throws Exception {
                return null;
            }
        }).subscribe(new DisposableSingleObserver<String>() {
            @Override
            public void onSuccess(String s) {

            }

            @Override
            public void onError(Throwable e) {

            }
        });

5.Maybe

onSuccess(String s)接收Maybe發出的數據,完成就調用onComplete(),否則調用onError(Throwable e)
onSuccess(String s)必須執行於onComplete()onError(Throwable e)之前,否則無效。

Maybe.fromCallable(new Callable<String>() {
            @Override
            public String call() throws Exception {
                return null;
            }
        }).subscribe(new DisposableMaybeObserver<String>() {
            @Override
            public void onSuccess(String s) {
                
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });

從上方介紹的Observables中,會發現其中有fromCallablefromAction,都是建立要執行的內容,差異是:
fromCallable:有回傳值
fromAction:無回傳值


上一篇
android studio 30天學習筆記-day 8-基本介紹rxjava2
下一篇
android studio 30天學習筆記-day 10-rxjava2+retrofit
系列文
android studio 30天學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言