RxJava2.0學習總結

好吧纷妆。在不知道該做什么的時候,就跟隨這別人的腳步走吧晴弃;
學習資料 :
給初學者的RxJava2.0教程
強烈推薦這一系列教程掩幢,簡單易懂,分析得面面俱到上鞠,雖然际邻,我特么還是不會實戰(zhàn)。
廢物芍阎!
講道理世曾,我這保守落后的大清少年,在這之前我連這玩意是干什么的都不知道谴咸,現在也是半懵逼狀態(tài) 轮听。

在使用RxJava2.0之前

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'

說有個觀察者,被觀察者岭佳,他倆通過訂閱來進行連接
Observer血巍、Observable 、subscribe()

觀察者通過這個訂閱方法珊随,告訴被觀察者述寡,你要做事情時啊,你就發(fā)送信息告訴我一聲叶洞,
然后就是這樣鲫凶,被觀察者呢,他就在自己進行操作的時候衩辟,發(fā)送信息給觀察者螟炫,我要干事情嘍。

 Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> e) throws Exception {

                e.onNext(1);
                e.onNext(2);
                e.onNext(3);
                e.onComplete();
//onComplete之后的數據惭婿,被觀察者照常發(fā)送不恭,但是觀察者并不會接收到。
                e.onNext(4);
            }

        }).subscribe(new Observer<Integer>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.i("TAG-->", "subscribe");
            }

            @Override
            public void onNext(Integer value) {
                Log.i("TAG-->", value + "");
            }

            @Override
            public void onError(Throwable e) {

                Log.i("TAG-->", "error");
            }

            @Override
            public void onComplete() {
                Log.i("TAG-->", "complete");
            }
        });


還有RxJava可以很輕松的切換線程财饥。

  • Schedulers.io() 代表io操作的線程, 通常用于網絡,讀寫文件等io密集型的操作
  • Schedulers.computation() 代表CPU計算密集型的操作, 例如需要大量計算的操作
  • Schedulers.newThread() 代表一個常規(guī)的新線程
  • AndroidSchedulers.mainThread() 代表Android的主線程

   //RxJava內置的線程調度器换吧,可以輕松的切換線程;

        Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> e) throws Exception {

                Log.i("TAG-->", "Observable  thread  is :" + Thread.currentThread().getName());
                e.onNext(1);

            }
        });


        Consumer consumer = new Consumer<Integer>() {

            @Override
            public void accept(Integer integer) throws Exception {

                Log.d("TAG-->", "Observer thread is :" + Thread.currentThread().getName());
            }
        };

        //  observable.subscribe(consumer);

        observable.subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(consumer);

通過map轉換數據類型

 //Map , 我們在上游發(fā)送integer類型數據钥星,通過map 沾瓦,將數據轉換為 string  ,
        //  使得下游接受的數據為string

        Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> e) throws Exception {

            }
        }).map(new Function<Integer, String>() {
            @Override
            public String apply(Integer integer) throws Exception {
                return "This  is  result " + integer;
            }
        }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {

                Log.i("TAG-->", s);
            }
        });

zip函數整合數據

 //打包數據 ,通過一個函數,將多個 Observable 發(fā)送的事件結合到一起贯莺,然后發(fā)送這些組合到一起的事件
        
        Observable observable1 = Observable.create(new ObservableOnSubscribe() {
            @Override
            public void subscribe(ObservableEmitter e) throws Exception {

                e.onNext(1);
                e.onNext(2);
                e.onNext(3);
                e.onNext(4);
                e.onComplete();
            }
        }).subscribeOn(Schedulers.io());


        Observable observable2 = Observable.create(new ObservableOnSubscribe() {
            @Override
            public void subscribe(ObservableEmitter e) throws Exception {

                e.onNext("A");
                e.onNext("B");
                e.onNext("C");
                e.onComplete();

            }
        }).subscribeOn(Schedulers.io());


        Observable.zip(observable1, observable2, new BiFunction<Integer, String, String>() {

            @Override
            public String apply(Integer integer, String s) throws Exception {
                return integer + s;
            }
        }).subscribe(new Observer() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(Object value) {
                Log.i("TAG-->", value + "");
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末风喇,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子缕探,更是在濱河造成了極大的恐慌魂莫,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爹耗,死亡現場離奇詭異耙考,居然都是意外死亡,警方通過查閱死者的電腦和手機潭兽,發(fā)現死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門倦始,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人山卦,你說我怎么就攤上這事鞋邑。” “怎么了账蓉?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵枚碗,是天一觀的道長。 經常有香客問我剔猿,道長视译,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任归敬,我火速辦了婚禮酷含,結果婚禮上,老公的妹妹穿的比我還像新娘汪茧。我一直安慰自己椅亚,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布舱污。 她就那樣靜靜地躺著呀舔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扩灯。 梳的紋絲不亂的頭發(fā)上媚赖,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音珠插,去河邊找鬼惧磺。 笑死,一個胖子當著我的面吹牛捻撑,可吹牛的內容都是我干的磨隘。 我是一名探鬼主播缤底,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼番捂!你這毒婦竟也來了个唧?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤设预,失蹤者是張志新(化名)和其女友劉穎徙歼,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體絮缅,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡鲁沥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了耕魄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡彭谁,死狀恐怖吸奴,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情缠局,我是刑警寧澤则奥,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站狭园,受9級特大地震影響读处,放射性物質發(fā)生泄漏。R本人自食惡果不足惜唱矛,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一罚舱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绎谦,春花似錦管闷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冤留,卻和暖如春碧囊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纤怒。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工糯而, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肪跋。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓歧蒋,卻偏偏與公主長得像土砂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谜洽,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容