Android RxJava

GitHut 地址: https://github.com/ReactiveX/RxAndroidhtml

build.gradle:java

1 compile 'io.reactivex:rxandroid:1.2.1'
2 compile 'io.reactivex:rxjava:1.2.2'

(1)RxJava簡介:react

RxJava 是一個在Java虛擬機上實現的響應式擴展庫:提供了基於observable序列實現的異步調用及基於事件編程。android

RxJava最核心的兩個東西是Observables(被觀察者,事件源)和Subscribers(觀察者)。Observables發出一系列事件,Subscribers處理這些事件。ios

它擴展了觀察者模式,支持數據、事件序列並容許你合併序列,無需關心底層的線程處理、同步、線程安全、併發數據結構和非阻塞I/O處理。git

一個Observable能夠發出零個或者多個事件,知道結束或者出錯。每發出一個事件,就會調用它的Subscriber的onNext方法,最後調用Subscriber.onNext()或者Subscriber.onError()結束。github

RxJava是由Netflix開發的反應式擴展(Reactive Extensions)的Java實現。Reactive Extensions是這樣一個第三方庫:它結合了可觀察集合和LINQ式查詢以達到異步和基於事件的編程效果數據庫

Netflix將這個庫託管到了Github上,支持Java6以上的版本而且使它能夠用於Android App開發。編程

它支持Java5及更高版本,並支持其餘一些基於JVM的語言,如Groovy、Clojure和Scala。安全

咱們假設你已經對RxJava有一些瞭解。若是沒有的話,強烈建議先看看這兩篇 文章和Netflix在Github Wiki上的前幾頁。

(2)觀察者模式

  1. Observable和Subscriber能夠作任何事情
Observable能夠是一個數據庫查詢,Subscriber用來顯示查詢結果;Observable能夠是屏幕上的點擊事件,Subscriber用來響應點擊事件;Observable能夠是一個網絡請求,Subscriber用來顯示請求結果。

  2. Observable和Subscriber是獨立於中間的變換過程的。
在Observable和Subscriber中間能夠增減任何數量的map。整個系統是高度可組合的,操做數據是一個很簡單的過程。

(3)實現內容

e.g. 

Model類中name內容變化時,View(Activity)中Subscribers這個name的變化,同步更新Ui上的Name。
我想到的方式是
在Model中建立Obervable,在setName方法中,寫入nameObservable.onNext(newName)這一行。

(ios開發有ReactiveCocoa這個框架,相似rxjava,能夠監聽成員變量值變化)

ReactiveCocoa是比RxJava更方便一些,RxJava一個比較好的解決這個問題的方法就是爲view model建立一個compose subscription,能夠參考這個項目 https://github.com/tehmou/rx-android-architecture

逐步學習:

深刻淺出RxJava(一:基礎篇)

深刻淺出RxJava(二:操做符)

深刻淺出RxJava三--響應式的好處

深刻淺出RxJava四-在Android中使用響應式編程 

注意對持有的context致使的內存泄露)解決方法,把Subscription加入到隊列中進行管理,當activity關閉時,對Subscription進行清除。

如何升級到RxAndroid 1.0

 

 Flipoard 的扔物線了,著名的開源庫 MaterialEditText 做者,仍是著名的 codeKK 上 Dagger 源碼解析做者。


接下來再推薦一位對岸的小夥伴 yongjhih ,一樣是 RxJava 的狂熱愛好者,雖然不如大頭鬼和扔物線著名,不過教程和代碼都是至關漂亮,他的 GitHub 上有不少關於 RxJava 的 Examples 。
 
代碼  LittleRx
最主要的4個類:Observable、OnSubscribe、Operator、Subscriber

接下來再推薦幾個:
相關文章
相關標籤/搜索