1.前言
Rxjava, 具有鏈式呼叫、使用簡單&事件與結果鬆耦合的特點。
Rxjava, 之所以深受歡迎它包含 非常多操作符,能通過 【鏈式形】 優雅整潔的程式碼幾乎能實現所有的功能需求。
本文特點:圖多字少、邏輯簡單。
之前面試中被問了很多Rxjava的知識,今天獻一份不一樣詮釋,希望大家喜歡。
2.目錄
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/a2483ed441bc35acfee735485475ceb49ee7163b03a22a1afb7f4131a1de0bfe.png)
3.簡介
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/80bb4072ab6d170652bccd2dc722a0e47da86ae3917deba1066e91917447cf94.png)
4.原理淺析
- Rxjava,擴充套件自觀察者模式。
4.1 生活例子
通過手機叫外賣例子,分析一下rxjava的原理。
叫外賣流程
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/425cd1a004566366043ed3957a7e1568ef97ffe134a44a46b607cc6cd28e81b4.png)
- 涉及的角色與對應流程
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/0d8024dd820815369e6498b66f9442ac0962632343988c417cecc08e444745f3.png)
4.2 例子結合Rxjava
- Rxjava,包含觀察者、被觀察者、訂閱行為&事件,與例子對應如下圖:
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/2f06d0487198c7170b2d0a34c325793957d07934df326da60674b07ce6643a70.png)
- 對應Rxjava基本使用程式碼:
public void create(){
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
e.onNext("烤雞一份");
e.onNext("薯條一份");
e.onNext("可樂一杯");
// e.onError(new NullPointerException());
e.onComplete();
}
}).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.e(TAG,"onSubscribe : 訂閱成功");
}
@Override
public void onNext(String s) {
Log.e(TAG,"onNext : 接收事件 "+s);
//按順序得到:烤雞一份、薯條一份、可樂一杯
}
@Override
public void onError(Throwable e) {
Log.e(TAG,"onError : 事件異常 "+e.toString());
}
@Override
public void onComplete() {
Log.e(TAG,"onComplete : 事件執行完畢 ");
}
});
}
複製程式碼
總結:
被觀察者(Observable):通過訂閱行為(subscribe())把事件按順序傳送到 觀察者(Observer)。 觀察者(Observer):按順序接收到事件&做出響應反饋。
5.操作符
5.1建立操作符
作用 :被觀察者把事件傳送至觀察者。
應用 :
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/4694400eb4c0a39a212ebfece5d2c20a46fc53b8fc5b515c37fde67b7940612d.png)
5.2變換操作符
作用 :被觀察者把序列事件加工為其他序列事件(變換)。
原理 :結合叫外賣的例子(更改菜式)。
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/3a059498fbaea24ec81480b71c3b191c96f8ab6d96e2884f53ea64cc302bebd4.png)
- 應用 :
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/21d334e98629f2aebb4014e309c37fdd754486422d974f552ae8871c974eba3f.png)
5.3合拼操作符
作用 :將多個被觀察組合 & 將它們需要傳送的事件合拼。
應用 :
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/c51d0826661f9dada82c8b146c6ee15fbc827d28d01ad0bfad61bfa36c3f0c90.png)
5.4過濾操作符
作用 :過濾/篩選 被觀察者傳送的事件。
應用 :
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/63ce4e2035be0424a4c7f2bc1741c4ad577ddb1ba1bcd247e65c13eb496669c5.png)
5.5條件操作符
作用 :通過指定條件,判斷是否接收被觀察者傳送的事件。
應用 :
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/155e55835364a92112819e77926feb62cb4d078b238c27c7aaf4e52a55b2519c.png)
5.6其他功能操作符
作用 :被觀察者傳送事件時,進行功能性擴充。
應用 :
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/8a5bbc2cc2b9e6a1f592c5dd4225216e354a1e34e906a235d4e608ec79670182.png)
6.框架設計思想
![Android Rxjava:圖解不一樣的詮釋](https://i.iter01.com/images/30db703c502c5a6472ac4eb19e44399954a02268dacea922001efa978a1f5678.png)
7.總結
Rxjava 如此好用、簡單、優雅的鏈式任務框架庫,你還等什麼?
到此,基本完成了rxjava相關介紹與使用,希望大家喜歡我的文章。
希望該文章能幫助準備面試、準備使用Rxjava的兄die們。
寫技術文章初心
技術知識積累
技術知識鞏固
技術知識分享
技術知識交流