1.前言
- Rxjava, 具有鏈?zhǔn)秸{(diào)用、使用簡(jiǎn)單&事件與結(jié)果松耦合的特點(diǎn)。
- Rxjava沉唠, 之所以深受歡迎它包含 非常多操作符,能通過 【鏈?zhǔn)叫巍?優(yōu)雅整潔的代碼幾乎能實(shí)現(xiàn)所有的功能需求苛败。
- 本文特點(diǎn):圖多字少满葛、邏輯簡(jiǎn)單。
- 之前面試中被問了很多Rxjava的知識(shí)罢屈,今天獻(xiàn)一份不一樣詮釋嘀韧,希望大家喜歡。
- 文章中實(shí)例 linhaojian的Github
2.目錄
3.簡(jiǎn)介
4.原理淺析
- Rxjava儡遮,擴(kuò)展自觀察者模式乳蛾。
4.1 生活例子
- 通過手機(jī)叫外賣例子,分析一下rxjava的原理鄙币。
-
叫外賣流程
-
涉及的角色與對(duì)應(yīng)流程
4.2 例子結(jié)合Rxjava
-
Rxjava肃叶,包含觀察者、被觀察者十嘿、訂閱行為&事件因惭,與例子對(duì)應(yīng)如下圖:
對(duì)應(yīng)Rxjava基本使用代碼:
public void create(){
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
e.onNext("烤雞一份");
e.onNext("薯?xiàng)l一份");
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);
//按順序得到:烤雞一份、薯?xiàng)l一份绩衷、可樂一杯
}
@Override
public void onError(Throwable e) {
Log.e(TAG,"onError : 事件異常 "+e.toString());
}
@Override
public void onComplete() {
Log.e(TAG,"onComplete : 事件執(zhí)行完畢 ");
}
});
}
總結(jié):
被觀察者(Observable):通過訂閱行為(subscribe())把事件按順序發(fā)送到 觀察者(Observer)蹦魔。 觀察者(Observer):按順序接收到事件&做出響應(yīng)反饋激率。
5.操作符
5.1創(chuàng)建操作符
- 作用 :被觀察者把事件發(fā)送至觀察者。
-
應(yīng)用 :
5.2變換操作符
- 作用 :被觀察者把序列事件加工為其他序列事件(變換)勿决。
- 原理 :結(jié)合叫外賣的例子(更改菜式)乒躺。
-
應(yīng)用 :
5.3合拼操作符
- 作用 :將多個(gè)被觀察組合 & 將它們需要發(fā)送的事件合拼。
-
應(yīng)用 :
5.4過濾操作符
- 作用 :過濾/篩選 被觀察者發(fā)送的事件低缩。
-
應(yīng)用 :
5.5條件操作符
- 作用 :通過指定條件嘉冒,判斷是否接收被觀察者發(fā)送的事件。
-
應(yīng)用 :
5.6其他功能操作符
- 作用 :被觀察者發(fā)送事件時(shí)咆繁,進(jìn)行功能性拓展讳推。
-
應(yīng)用 :
6.框架設(shè)計(jì)思想
7.總結(jié)
- Rxjava 如此好用、簡(jiǎn)單玩般、優(yōu)雅的鏈?zhǔn)饺蝿?wù)框架庫银觅,你還等什么?
- 到此坏为,基本完成了rxjava相關(guān)介紹與使用究驴,希望大家喜歡我的文章。
- 希望該文章能幫助準(zhǔn)備面試久脯、準(zhǔn)備使用Rxjava的兄die們纳胧。
- linhaojian的Github
寫技術(shù)文章初心
- 技術(shù)知識(shí)積累
- 技術(shù)知識(shí)鞏固
- 技術(shù)知識(shí)分享
- 技術(shù)知識(shí)交流