幫助理解記憶RxJava的9個例子

參考的博文

看過好多rxjava的文章实愚。兼呵。感覺這個最好本文例子基本都是copy里面的,只是為了方便自己記憶腊敲。當(dāng)做工具
這個是rxjava 1.x版本的特別特別好的

例子 1 普通的訂閱

image.png
        /**
         * 1 上下級訂閱 鏈?zhǔn)讲僮?         */
        //上游
        Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
                observableEmitter.onNext("1");
                observableEmitter.onNext("2");
                observableEmitter.onNext("3");
                observableEmitter.onComplete();
            }
            //訂閱下游
        }).subscribe(new Observer<String>() {
            @Override
            public void onSubscribe(Disposable disposable) {
            
            }

            @Override
            public void onNext(String s) {

            }

            @Override
            public void onError(Throwable throwable) {

            }

            @Override
            public void onComplete() {

            }
        });

例子2 去除下游不需要實現(xiàn)的太多方法

image.png
      
        /**
         * 2 上下級訂閱 簡化下游實現(xiàn)方法太多
         */
        //上游
        Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
                observableEmitter.onNext("1");
                observableEmitter.onNext("2");
                observableEmitter.onNext("3");
                observableEmitter.onComplete();
            }
            //訂閱下游
        }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {

            }
        }, new Consumer<Throwable>() {
            @Override
            public void accept(Throwable throwable) throws Exception {

            }
        });

例子3 上游代碼在其他線程執(zhí)行,(例如請求網(wǎng)絡(luò)的操作),下游代碼在主線程執(zhí)行

image.png
        /**
         * 3 上游代碼在其他線程執(zhí)行,(例如請求網(wǎng)絡(luò)的操作),下游代碼在主線程執(zhí)行
         */
        Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
                observableEmitter.onNext("1");
                observableEmitter.onNext("2");
                observableEmitter.onNext("3");
                observableEmitter.onComplete();
            }
        }).subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String s) throws Exception {

                    }
                });
    

例子4 rxjava和retrofit的聯(lián)合使用

省事击喂。。直接附鏈接好了

例子5 rxjava中map的使用

map--將observable中的原始的數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換并且返回一個observable的類型例如開始傳入的類型是String類型的碰辅。懂昂。經(jīng)過中游(map)的轉(zhuǎn)換。没宾。下游就可以接收到int類型的數(shù)據(jù)而不是之前的String凌彬。

image.png
        /**
         * 5 map observable的格式轉(zhuǎn)換
         */
        Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
                observableEmitter.onNext("1");
                observableEmitter.onNext("2");
                observableEmitter.onNext("3");
                observableEmitter.onComplete();
            }
        }).map(new Function<String, Integer>() {
            @Override
            public Integer apply(String s) throws Exception {
                return Integer.parseInt(s);
            }
        }).subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) throws Exception {

            }
        });

例子6 rxjava中flatmap和concatMap的使用
flatmap 不一定會按照上游發(fā)送的順序給下游發(fā)送。循衰。concatMap會嚴(yán)格按照上游發(fā)送的順序發(fā)送事件

image.png
 /**
         * 6 flapMap observable的格式轉(zhuǎn)換
         */
        Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> observableEmitter) throws Exception {
                observableEmitter.onNext("1");
                observableEmitter.onNext("2");
                observableEmitter.onNext("3");
                observableEmitter.onComplete();
            }
        }).flatMap(new Function<String, ObservableSource<Integer>>() {
            @Override
            public ObservableSource<Integer> apply(String s) throws Exception {
                return new ObservableSource<Integer>() {
                    @Override
                    public void subscribe(Observer<? super Integer> observer) {
                        observer.onNext(1);
                        observer.onNext(2);
                        observer.onNext(3);
                        observer.onComplete();
                    }
                };
            }
        }).subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) throws Exception {

            }
        });

例子7 Observable 創(chuàng)建的其他快捷方式

        /**
         * 7 Observable 創(chuàng)建的其他快捷方式
         */
        Observable.just("1","2").subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {

            }
        });

        Observable.fromIterable(Arrays.asList("1","2")).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {

            }
        });

       Observable.fromArray("1","2","3").subscribe(new Consumer<String>() {
           @Override
           public void accept(String s) throws Exception {
           }
       });

例子8 zip操作符

        /**
         * 8 zip操作符  可用在例如多個網(wǎng)絡(luò)操作铲敛,顯示loading,當(dāng)多個網(wǎng)絡(luò)操作都結(jié)束的時候 在最后關(guān)閉loading羹蚣、
         */
        Observable observable1 = Observable.just(1);
        Observable observable2 = Observable.just("1", "2");

        Observable.zip(observable1, observable2, new BiFunction<Integer, String, String>() {
            @Override
            public String apply(Integer integer, String s) throws Exception {
                return integer + s;
            }
        }).subscribe(new Consumer() {
            @Override
            public void accept(Object o) throws Exception {

            }
        });

例子9 filter 過濾操作符

        /**
         * 9 filter  過濾操作符
         */
        Observable.just(1,2,3).filter(new Predicate<Integer>() {
            @Override
            public boolean test(Integer integer) throws Exception {
               return true;
            }
        }).subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) throws Exception {
            }
        });

Rxjava--------Flowable

Flowable

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末原探,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子顽素,更是在濱河造成了極大的恐慌咽弦,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胁出,死亡現(xiàn)場離奇詭異型型,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)全蝶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門闹蒜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寺枉,“玉大人,你說我怎么就攤上這事绷落±焉粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵砌烁,是天一觀的道長筐喳。 經(jīng)常有香客問我,道長函喉,這世上最難降的妖魔是什么避归? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮管呵,結(jié)果婚禮上梳毙,老公的妹妹穿的比我還像新娘。我一直安慰自己捐下,他們只是感情好账锹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蔑担,像睡著了一般牌废。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啤握,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天鸟缕,我揣著相機(jī)與錄音,去河邊找鬼排抬。 笑死懂从,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹲蒲。 我是一名探鬼主播番甩,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼届搁!你這毒婦竟也來了缘薛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤卡睦,失蹤者是張志新(化名)和其女友劉穎宴胧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體表锻,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恕齐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞬逊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片显歧。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡仪或,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出士骤,到底是詐尸還是另有隱情范删,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布敦间,位于F島的核電站瓶逃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏廓块。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一契沫、第九天 我趴在偏房一處隱蔽的房頂上張望带猴。 院中可真熱鬧,春花似錦懈万、人聲如沸拴清。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽口予。三九已至,卻和暖如春涕侈,著一層夾襖步出監(jiān)牢的瞬間沪停,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工裳涛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留木张,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓端三,卻偏偏與公主長得像舷礼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子郊闯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

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