初步認(rèn)識(shí)RXJava

前言:面向?qū)ο笞兂墒敲钍骄幊痰囊环N,面向計(jì)算機(jī)硬件的抽象,有變量、賦值、表達(dá)式和控制語(yǔ)句。函數(shù)式編程是面向數(shù)學(xué)的抽象,將計(jì)算描述為表達(dá)式求值。響應(yīng)式編程時(shí)一種面向數(shù)據(jù)流和變化流的編程范式,數(shù)據(jù)跟新是相互關(guān)聯(lián)的,函數(shù)式編程和響應(yīng)式編程整合起來(lái)就是函數(shù)響應(yīng)式編程。當(dāng)下有兩種函數(shù)響應(yīng)式編程框架,其一是RXJava,另一個(gè)是Agera。將一系列的操作符鏈接起來(lái)就可以完成復(fù)雜的邏輯。代碼被分解成一系列可以組合的片段。這就是響應(yīng)式函數(shù)編程的魅力

RxJava最核心的兩個(gè)東西是Observables(被觀察者,事件源)和Subscribers(觀察者)。Observables發(fā)出一系列事件,Subscribers處理這些事件。這里的事件可以是任何你感興趣的東西(觸摸事件,web接口調(diào)用返回的數(shù)據(jù)。。。)

一個(gè)Observable可以發(fā)出零個(gè)或者多個(gè)事件,直到結(jié)束或者出錯(cuò)。每發(fā)出一個(gè)事件,就會(huì)調(diào)用它的Subscriber的onNext方法,最后調(diào)用Subscriber.onNext()或者Subscriber.onError()結(jié)束。

Rxjava的看起來(lái)很想設(shè)計(jì)模式中的觀察者模式,但是有一點(diǎn)明顯不同,那就是如果一個(gè)Observerble沒(méi)有任何的的Subscriber,那么這個(gè)Observable是不會(huì)發(fā)出任何事件的。

設(shè)計(jì)特點(diǎn)
1、 Observable可以是一個(gè)數(shù)據(jù)庫(kù)查詢,Subscriber用來(lái)顯示查詢結(jié)果;Observable可以是屏幕上的點(diǎn)擊事件,Subscriber用來(lái)響應(yīng)點(diǎn)擊事件;Observable可以是一個(gè)網(wǎng)絡(luò)請(qǐng)求,Subscriber用來(lái)顯示請(qǐng)求結(jié)果。按理來(lái)說(shuō)SubScriber越簡(jiǎn)單越好,因?yàn)榭赡軙?huì)在主線程中運(yùn)行,而且他的核心功能時(shí)響應(yīng)而不是修改。

2、Subscriber并不知道操作流對(duì)數(shù)據(jù)的處理,它只知道自己接受一個(gè)Observable對(duì)象。

3、Observerable對(duì)象流不需要知道如何處理錯(cuò)誤,完全交由Subscriber處理

4、你可以使用subscribeOn()指定觀察者代碼運(yùn)行的線程,使用observerOn()指定訂閱者運(yùn)行的線程

5、當(dāng)調(diào)用Observable.subscribe(),會(huì)返回一個(gè)Subscription對(duì)象,你可以在后面使用這個(gè)Subscription對(duì)象來(lái)操作被觀察者和訂閱者之間的聯(lián)系。此外需要注意內(nèi)存泄露。

demo地址 https://github.com/LeeFranz/Android-Network/tree/master/RxJavaTest

參考文章:
https://blog.csdn.net/lzyzsd/article/details/41833541
https://blog.csdn.net/lzyzsd/article/details/44094895
https://blog.csdn.net/lzyzsd/article/details/44891933
https://blog.csdn.net/lzyzsd/article/details/45033611

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • http://blog.csdn.net/yyh352091626/article/details/5330472...
    奈何心善閱讀 3,652評(píng)論 0 0
  • 來(lái)自于:CSDNblog.csdn.net/caihongdao123/article/details/51897...
    于加澤閱讀 1,458評(píng)論 0 5
  • 引言:學(xué)習(xí)了一下RxJava,理解其是一個(gè)以升級(jí)版的觀察者模式為核心的異步處理庫(kù)。旨在以更加簡(jiǎn)介、可讀性更強(qiáng)的代碼...
    androidjp閱讀 5,784評(píng)論 1 28
  • 一、Retrofit詳解 ·Retrofit的官網(wǎng)地址為 : http://square.github.io/re...
    余生_d630閱讀 2,095評(píng)論 0 5
  • 盼望著,盼望著,國(guó)慶節(jié)到了,七天的假期也來(lái)了!我們說(shuō)說(shuō)笑笑歡聚一堂,想要好好珍惜這美好的時(shí)光!但現(xiàn)實(shí)是殘忍的,不一...
    小彤_閱讀 238評(píng)論 0 5

友情鏈接更多精彩內(nèi)容