RxJava基礎總結

1.本文僅基于RxJava2.0、Retrofit2.0(引入背壓)

當下Rxjava,Retrofit已成項目標配瓶殃,為了提升自己逼格苛白,本人最近也重新加入Rx大隊伍中,其實一年前就使用過Rxjava1憔涉、Retrofit寫過項目,但是后來因為種種原因锅尘,沒能繼續(xù)探索下去监氢,現(xiàn)如今重新拾起布蔗,希望能有一個好的結果藤违。


RxJava引入的目的:異步,代碼更清晰

?????? 優(yōu)點:采用觀察者模式鏈式調用纵揍,簡潔明了顿乒,以往實現(xiàn)子線程主線程切換需自己手動new Thread(推薦線程池),并且線程之間還需要使用handler進行通信泽谨,Rxjava一步到位璧榄,極其簡單

1.基礎概念:

Observable:在觀察者模式中稱為“被觀察者”特漩;

Observer:觀察者模式中的“觀察者”,可接收Observable發(fā)送的數(shù)據(jù)骨杂;

subscribe:訂閱涂身,觀察者與被觀察者,通過subscribe()方法進行訂閱搓蚪;

Subscriber:也是一種觀察者蛤售,在2.0中 它與Observer沒什么實質的區(qū)別,不同的是 Subscriber與??? Flowable(也是一種被觀察者)聯(lián)合使用妒潭,該部分內容是2.0新增的悴能,后續(xù)文章再介紹。

Flowable:也是悲觀餐者的一種雳灾,與Subscriber進行配合使用漠酿,實現(xiàn)背壓操作

總結:觀察者訂閱被觀察者,Obsesrver用于訂閱Observable,而Subscriber用于訂閱Flowable

具體可以解釋為:A 對象(觀察者)對 B 對象(被觀察者)的某種變化高度敏感谎亩,需要在 B 變化的一瞬間做出反應炒嘲。

注意:Observer是個接口,Observable是個類团驱。

RxJava的異步實現(xiàn)方式:讓Observable (被觀察者)開啟子線程執(zhí)行耗操作摸吠,完成耗時操作后,觸發(fā)回調嚎花,通知Observer (觀察者)進行主線程UI更新寸痢。如此輕松便可以實現(xiàn)Android中的異步,且代碼簡潔明了紊选,集中分布啼止。RxJava中默認Observer (觀察者)和Observable (被觀察者)都在同一線程執(zhí)行任務。


2.RxJava常用操作符

操作符就是用于在Observable和最終的Observer之間兵罢,通過轉換Observable為其他觀察者對象的過程献烦,修改發(fā)出的事件,最終將最簡潔的數(shù)據(jù)傳遞給Observer對象

map()操作符卖词,就是把原來的Observable對象轉換成另一個Observable對象巩那,同時將傳輸?shù)臄?shù)據(jù)進行一些靈活的操作,方便Observer獲得想要的數(shù)據(jù)形式此蜈。

flatMap()操作符 返回任何它想返回的Observable對象即横。

filter()操作符 過濾出想要的

take()操作符:輸出最多指定數(shù)量的結果

doOnNext()允許我們在每次輸出一個元素之前做一些額外的事情


3.Scheduler(調度器)切換線程

Schedulers.immediate(): 直接在當前線程運行,相當于不指定線程裆赵。默認的

Schedulers.newThread(): 總是啟用新線程东囚,并在新線程執(zhí)行操作。

Schedulers.io(): I/O 操作(讀寫文件战授、讀寫數(shù)據(jù)庫页藻、網絡信息交互等)所使用的 Scheduler桨嫁。能夠重用空閑的線程

Schedulers.computation(): 計算所使用的 Scheduler。這個計算指的是 CPU 密集型計算份帐,即不會被 I/O 等操作限制性能的操作璃吧,例如圖形的計算。

AndroidSchedulers.mainThread()废境,它指定的操作將在 Android 主線程運行肚逸。

subscribeOn(): 指定Observable(被觀察者)所在的線程,或者叫做事件產生的線程彬坏。

observeOn(): 指定 Observer(觀察者)所運行在的線程朦促,或者叫做事件消費的線程。


4.Flowable與Subscriber

BackpressureStrategy.ERROR 在ERROR策略下栓始,如果緩存池溢出务冕,就會立刻拋出MissingBackpressureException異常

BackpressureStrategy.BUFFER 支持存很多很多的數(shù)據(jù),不會產生OOM,總之BUFFER要慎用

BackpressureStrategy.DROP 當消費者處理不了事件,就丟棄幻赚。

BackpressureStrategy.LATEST 與DROP功能基本一致,唯一的區(qū)別就是LATEST總能使消費者能夠接收到生產者產生的最后一個事件禀忆。

具體使用:

一.導入配置,使用 Gradle 方式添加依賴:

二落恼、創(chuàng)建retrofit

1)因為需要跟okhttp配合使用箩退,故先創(chuàng)建okhttpclient

2)創(chuàng)建retrofit

3)定義具體邏輯接口和bean對象

4)最后就可以愉快的使用啦

后續(xù)會推出更多相關文章!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末佳谦,一起剝皮案震驚了整個濱河市戴涝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钻蔑,老刑警劉巖啥刻,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異咪笑,居然都是意外死亡可帽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門窗怒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來映跟,“玉大人,你說我怎么就攤上這事扬虚∨叮” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵孔轴,是天一觀的道長剃法。 經常有香客問我碎捺,道長路鹰,這世上最難降的妖魔是什么贷洲? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮晋柱,結果婚禮上优构,老公的妹妹穿的比我還像新娘。我一直安慰自己雁竞,他們只是感情好钦椭,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碑诉,像睡著了一般彪腔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上进栽,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天德挣,我揣著相機與錄音,去河邊找鬼快毛。 笑死格嗅,一個胖子當著我的面吹牛,可吹牛的內容都是我干的唠帝。 我是一名探鬼主播屯掖,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼襟衰!你這毒婦竟也來了贴铜?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瀑晒,失蹤者是張志新(化名)和其女友劉穎阀湿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑰妄,經...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡陷嘴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了间坐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灾挨。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖竹宋,靈堂內的尸體忽然破棺而出劳澄,到底是詐尸還是另有隱情,我是刑警寧澤蜈七,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布秒拔,位于F島的核電站,受9級特大地震影響飒硅,放射性物質發(fā)生泄漏砂缩。R本人自食惡果不足惜作谚,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望庵芭。 院中可真熱鬧妹懒,春花似錦、人聲如沸双吆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽好乐。三九已至匾竿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔚万,已是汗流浹背搂橙。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笛坦,地道東北人区转。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像版扩,于是被迫代替她去往敵國和親废离。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容