我學(xué) rxjava - 目錄

本文以 Rxjava 2 為基準(zhǔn),并非是詳細(xì)的入門文章,而是記錄我的學(xué)習(xí)過程中的知識(shí)點(diǎn)

想學(xué)習(xí) Rxjava 1 ,或者不想看我文章的請看:

rxjava 作為一個(gè)異步,響應(yīng)式庫影響的實(shí)在是太大了,不光是為我們提供了異常好用的異步操作,更是把響應(yīng)式編程的思想發(fā)揚(yáng)光大,自從 rxjava 出現(xiàn)后,各種響應(yīng)式編程的思想和使用如雨后春筍般出現(xiàn),甚至 Google 都推出了如 AAC 這樣的響應(yīng)式組件出來。

rxjava 作為學(xué)習(xí)響應(yīng)式編程的最佳切入點(diǎn),我們需要學(xué)習(xí)的內(nèi)容是非常多的,借 Carson_Ho 的一張圖表達(dá)下,大家安安靜靜的學(xué)習(xí)個(gè)吧星期就理解了


944365-4c1c1eb44ffe01e5.png

944365-369e71e6d3d04402.png

Rxjava 生命周期函數(shù)值行順序

Rxjava ·進(jìn)入 2.0 時(shí)代后,大幅度增加了生命周期函數(shù)的數(shù)量,大家有必須做到心里清楚

這里借:0青衣小褂0 同學(xué)的文章

Observable
->
doOnSubscribe
元素1
->
doOnEach
->
doOnNext
->
onNext(Observer)
->
doAfterNext

元素2
->
doOnEach
->
doOnNext
->
onNext(Observer)
->
doAfterNext

-> doOnEach
->{
  doOnError -> onError(Observer)
  doOnComplete -> onComplete(Observer)
}

->
doOnFinally
Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> e) throws Exception {
                e.onNext(1);
                e.onNext(2);
                e.onError(new NullPointerException());
                e.onNext(3);
            }
        })
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {
                        Log.d(TAG, "doOnSubscribe");
                    }
                })
                .doOnEach(new Consumer<Notification<Integer>>() {
                    @Override
                    public void accept(Notification<Integer> integerNotification) throws Exception {
                        Log.d(TAG, "doOnEach");
                    }
                })
                .doOnNext(new Consumer<Integer>() {
                    @Override
                    public void accept(Integer integer) throws Exception {
                        Log.d(TAG, "doOnNext");
                    }
                })
                .doAfterNext(new Consumer<Integer>() {
                    @Override
                    public void accept(Integer integer) throws Exception {
                        Log.d(TAG, "doAfterNext");
                    }
                })
                .doOnError(new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        Log.d(TAG, "doOnError");
                    }
                })
                .doFinally(new Action() {
                    @Override
                    public void run() throws Exception {
                        Log.d(TAG, "doFinally");
                    }
                })
                .subscribe(new Observer<Integer>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Integer integer) {
                        Log.d(TAG, "observe : onNext : " + integer);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "observe : onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.d(TAG, "observe : onComplete");
                    }
                });
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doOnSubscribe
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doOnEach
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doOnNext
02-13 11:08:46.821 19940-19940/... D/SplashActivity: observe : onNext : 1
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doAfterNext
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doOnEach
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doOnNext
02-13 11:08:46.821 19940-19940/... D/SplashActivity: observe : onNext : 2
02-13 11:08:46.821 19940-19940/... D/SplashActivity: doAfterNext
02-13 11:08:46.831 19940-19940/... D/SplashActivity: doOnEach
02-13 11:08:46.831 19940-19940/... D/SplashActivity: doOnError
02-13 11:08:46.831 19940-19940/... D/SplashActivity: observe : onError
02-13 11:08:46.831 19940-19940/... D/SplashActivity: doFinally

doOnEach 只要有元素發(fā)射,均會(huì)經(jīng)歷doOnEach,不論是不是正常元素,正常的元素,error,complete 都會(huì)觸發(fā) doOnEach

主要學(xué)習(xí)資料如下

簡友:Carson_Ho | 0青衣小褂0

我的文章目錄:

其他資料:

若不想 error 時(shí)結(jié)束鏈?zhǔn)?API ,可以看下面:

關(guān)于重試這塊的話看這篇:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容