Android RxJava 2 的用法 just 、from、map、subscribe、flatmap、Flowable、Function、Consumer ...__Java

來源:互聯網
上載者:User
先簡單說說RxJava的用途與價值

用途: 非同步 (也就是開線程跳轉)
價值: 面對複雜的邏輯,它依然 簡潔 ,代碼 易讀

RxJava2 與 RxJava 最大的不一樣的地方,就是 Flowable ,這個 Flowable 取代了Rxjava 中的 簡單的使用:

下面展示一段代碼:

Flowable        .fromArray(weeks)        .map(new Function<String, String>() {            @Override            public String apply(String s) throws Exception {                print("fromFlowable map s = " + s);                return "111";            }        })        .flatMap(new Function<String, Flowable<String>>() {            @Override            public Flowable<String> apply(String s) throws Exception {                print("fromFlowable flatMap s = " + s);                String[] strs = new String[]{"222", "333", "444"};                return Flowable.fromArray(strs);            }        })        .subscribeOn(Schedulers.io())        .observeOn(AndroidSchedulers.mainThread())        .subscribe(new Consumer<String>() {            @Override            public void accept(String s) throws Exception {                print("fromFlowable subscribe s = " + s);            }        });
Flowable        .just("星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天")        .subscribe(new Consumer<String>() {            @Override            public void accept(String s) throws Exception {                print("jsutFlowable subscribe s = " + s);            }        });

這就是RxJava2 的最簡單的使用了. fromArray方法:

傳入一個 數組 參數 .將參數注入到 Flowable 中 .
沒了.僅僅傳個數組進去而已. just方法:

傳入 若干個相同 的參數,將參數注入到 Flowable 中 .
沒了.僅僅傳入1個或者多個參數進去而已.
fromArray() 的作用的一樣的. 傳參數 !!! map方法:

map()方法,也很好理解.
1. Flowable 傳完參數之後
2. 接著調用 map()
3. map()的回調中,能直接拿到傳進來的參數,並且需要返回一個傳回值.待程式後續操作使用.
4. 參數可以隨意操作轉換, 參數傳回值類型.由 Function泛型控制
5. Function 泛型的第一個傳進來的參數 , 第二個是 傳回值的類型

它的價值:
主要還是為了處理資料.處理完之後 發射 給下一級 flatMap方法:

flatMap()map() 的作用用法全部一樣.
唯一的區別,就在於傳回值類型.
flatMap 返回去的又是一個 Flowable
實際上是 Publisher ,因為 FlowablePublisher實作類別 ,所以目前假裝返回的是 Flowable 類型

它的價值:
個人認為,就是少寫一個迴圈.因為往往用flatMap,返回去的Flowable , 都是用fromArray() 構造出來的對象.意義就是少寫個for 迴圈. subscribe方法:

subscribe()方法是傳一個Consumer對象進去.這個對象官方的說法是 被觀察者 . 個人理解為是一串 非同步 操作之後,進行 回顯UI 的一個操作.
accept方法裡面寫回顯UI的代碼. subscribeOn方法:

subscribeOn()傳入的是一個 Scheduler 對象,這個對象用來指定. 一系列操作在哪個線程執行
一般傳入子線程都可以. observeOn方法:

observeOn() 傳入的 也是一個 Scheduler對象,作用於subscribeOn一樣,用來指定線程.
只不過,它們的區別是:
subscribeOn() 指定的是一系列操作在哪個線程執行
observeOn() 指定的是 subscribe 的回調 在哪個線程執行.
一般就是 subscribeOn() 子線程執行 observeOn() 主線程執行 外來資料簡單展示:

1. Observable是資料的發射者,它會對外發射資料,然後經過map、flatmap**等等資料處理後,最終傳遞給**Observer,這個資料接收者。因此,拋開中間資料處理不管,可以看出,Observable對外發射資料,是資料流的開端;Observer接收資料,是資料流的末端

RxJava 的簡單用法,先寫到這裡
如果有什麼疑問,歡迎評論區留言.
本人看見會第一時間補充.
僅供參考,謝謝閱讀!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.