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


先簡單說說RxJava的用途與價值

原文出處:Android RxJava 2 的用法

 

用途: 異步 (也就是開線程跳轉) 

價值: 面對復雜的邏輯,它依然 簡潔 ,代碼 易讀

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接收數據,是數據流的末端

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM