先簡單說說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 ,因為 Flowable 是 Publisher 的 實現類 ,所以目前假裝返回的是 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接收數據,是數據流的末端。