RxJava——響應(yīng)式編程

什么是Rx

  • ReactiveX是Reactive Extensions的縮寫(xiě)。
  • Rx是一個(gè)編程模型衙传,目標(biāo)是提供一致的編程接口墨缘,幫助開(kāi)發(fā)者更方便的處理異步數(shù)據(jù)流。目前Rx支持大部分流行的編程語(yǔ)言驱富, 比如Java、C#匹舞、PHP等褐鸥。
    -Rx是一個(gè)函數(shù)庫(kù),讓開(kāi)發(fā)者可以利用可觀察序列和LINQ風(fēng)格查詢操作符來(lái)編寫(xiě)異步和基于事件的程序赐稽。
    -可以這樣定義:Rx = Observables + LINQ + Schedulers叫榕。
  • ReactiveX不僅僅是編程接口浑侥,更是一種編程思想的突破。Rx還影響了其它程序庫(kù)晰绎、框架以及編程語(yǔ)言锭吨。

Rx模式——觀察者模式

-創(chuàng)建:Rx可以方便的創(chuàng)建事件流和數(shù)據(jù)流;
-組合:Rx使用查詢式的操作符組合和變換數(shù)據(jù)流寒匙;
-監(jiān)聽(tīng):Rx可以訂閱任何可以觀察的數(shù)據(jù)流并執(zhí)行操作零如。

Rx優(yōu)點(diǎn)——簡(jiǎn)潔

-函數(shù)式風(fēng)格:Rx可以方便的創(chuàng)建事件流和數(shù)據(jù)流;
-簡(jiǎn)化代碼:Rx的操作符可以將復(fù)雜的邏輯簡(jiǎn)化為很少的幾行代碼锄弱;
-異步錯(cuò)誤處理機(jī)制:傳統(tǒng)的try/catch沒(méi)辦法處理異步計(jì)算考蕾,Rx提供了合適的錯(cuò)誤處理機(jī)制;
-輕松使用并發(fā):Rx的Observables和Schedulers讓開(kāi)發(fā)者可以避免底層線程同步和各種并發(fā)問(wèn)題会宪。

什么是RxJava

RxJava是[ReactiveX](http://reactivex.io/)在JVM上的一個(gè)實(shí)現(xiàn)肖卧,也就是說(shuō)RxJava就是一種用Java語(yǔ)言實(shí)現(xiàn)的響應(yīng)式編程,來(lái)創(chuàng)建  基于事件的異步程序掸鹅。

提升開(kāi)發(fā)效率塞帐,降低維護(hù)成本一直是開(kāi)發(fā)團(tuán)隊(duì)永恒不變的宗旨。近一年來(lái)國(guó)內(nèi)的技術(shù)圈子中越來(lái)越多的開(kāi)始提及RxJava巍沙,學(xué)習(xí)和掌握RxJava已經(jīng)很有必要葵姥。RxJava能幫助我們簡(jiǎn)化代碼邏輯,提升代碼可讀性句携。這對(duì)于提升開(kāi)發(fā)效率榔幸、降低后期維護(hù)成本很有幫助。
RxJava正在Android開(kāi)發(fā)者中變的也越來(lái)越流行矮嫉。唯一的問(wèn)題就是上手不容易削咆,尤其是大部分人之前都是使用命令式編程語(yǔ)言。但是一旦你弄明白了蠢笋,你就會(huì)發(fā)現(xiàn)RxJava真是太棒了拨齐。
本系列幫助你了解RxJava,希望你學(xué)完之后能夠了解RxJava背后的思想(熟練掌握還需要多使用多實(shí)踐)昨寞,并且喜歡RxJava瞻惋。

學(xué)習(xí)RxJava

響應(yīng)式編程的主要組成部分是Observable、 operator和subscriber编矾。一般響應(yīng)式編程的信息流如下所示:
Observable-> Operator 01 -> Operator 02->Operator03 ->Subscriber
Observable是事件的生產(chǎn)者熟史,Subscriber是事件最終的消費(fèi)者。
因?yàn)镾ubscriber通常在主線程中執(zhí)行窄俏,因此設(shè)計(jì)上要求代碼盡可能簡(jiǎn)單,只對(duì)事件作出響應(yīng)(不對(duì)事件和數(shù)據(jù)進(jìn)行修改)碘菜,而修 改事件的工作全部由 operator執(zhí)行凹蜈。
Observable observable = Observable.create(newObservable.OnSubscribe() {
      @Override
      public voidcall(Subscriber subscriber) {
      subscriber.onNext("hello word");
      subscriber.onCompleted();
  }
});
Observer observer =newObserver() {
      @Override
      public voidonCompleted() {
      System.out.println("onCompleted");
}
      @Override
      public voidonError(Throwable e) {
      System.out.println("onError");
}
      @Override
      public voidonNext(String s) {
      System.out.println("onNext=  "+ s);
}
};
 observable.subscribe(observer);

上面提到修改事件在operator中執(zhí)行(下面代碼)

observable.map(new Func1<String, String>() {
           @Override
           public String call(String s) {
               return s+"  add content";
           }
       }).subscribe(observer);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末限寞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子仰坦,更是在濱河造成了極大的恐慌履植,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悄晃,死亡現(xiàn)場(chǎng)離奇詭異玫霎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)妈橄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)庶近,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人眷蚓,你說(shuō)我怎么就攤上這事鼻种。” “怎么了沙热?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵叉钥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我篙贸,道長(zhǎng)投队,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任爵川,我火速辦了婚禮蛾洛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雁芙。我一直安慰自己轧膘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布兔甘。 她就那樣靜靜地躺著谎碍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洞焙。 梳的紋絲不亂的頭發(fā)上蟆淀,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音澡匪,去河邊找鬼熔任。 笑死,一個(gè)胖子當(dāng)著我的面吹牛唁情,可吹牛的內(nèi)容都是我干的疑苔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼甸鸟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惦费!你這毒婦竟也來(lái)了兵迅?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤薪贫,失蹤者是張志新(化名)和其女友劉穎恍箭,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瞧省,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扯夭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鞍匾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片交洗。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖候学,靈堂內(nèi)的尸體忽然破棺而出藕筋,到底是詐尸還是另有隱情,我是刑警寧澤梳码,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布隐圾,位于F島的核電站,受9級(jí)特大地震影響掰茶,放射性物質(zhì)發(fā)生泄漏暇藏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一濒蒋、第九天 我趴在偏房一處隱蔽的房頂上張望盐碱。 院中可真熱鬧,春花似錦沪伙、人聲如沸瓮顽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)暖混。三九已至,卻和暖如春翁授,著一層夾襖步出監(jiān)牢的瞬間拣播,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工收擦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贮配,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓塞赂,卻偏偏與公主長(zhǎng)得像泪勒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 我從去年開(kāi)始使用 RxJava 酣藻,到現(xiàn)在一年多了曹洽。今年加入了 Flipboard 后鳍置,看到 Flipboard 的...
    Jason_andy閱讀 5,456評(píng)論 7 62
  • 前言我從去年開(kāi)始使用 RxJava 辽剧,到現(xiàn)在一年多了。今年加入了 Flipboard 后税产,看到 Flipboard...
    占導(dǎo)zqq閱讀 9,158評(píng)論 6 151
  • 版權(quán)聲明:本文為小斑馬偉原創(chuàng)文章怕轿,轉(zhuǎn)載請(qǐng)注明出處! 上篇簡(jiǎn)單的闡述了響應(yīng)式編程的基本理論辟拷。這篇主要對(duì)響應(yīng)編程進(jìn)行詳...
    ZebraWei閱讀 2,213評(píng)論 0 2
  • 文章轉(zhuǎn)自:http://gank.io/post/560e15be2dca930e00da1083作者:扔物線在正...
    xpengb閱讀 7,020評(píng)論 9 73
  • 我覺(jué)得不論是在哪里哪種工作那種場(chǎng)合有人的地方就總會(huì)有那樣一個(gè)非常出眾的人撞羽。你會(huì)發(fā)現(xiàn)和周圍的大多數(shù)人相比較起來(lái)他是那...
    唯有杜康1994閱讀 151評(píng)論 0 0