RxJava 學習筆記<二> subject

Subjects 是一個繼承了 Observable 和實現 Observer 的接口,咋看之下看起來有點奇怪,可是在不少狀況可讓代碼寫起來簡單。ios

Subjects的實現有不少,咱們能夠看幾個例子,瞭解他們的不一樣之處git

PublishSubject

PublishSubject的操做是最直截了當的,當一個值被推到 PublishSubject中,這個 subject 就會把數據給到每一個 subscriber,1 沒有輸出是由於在他 push 的時候沒有 subscribedgithub

輸出:緩存

ReplaySubject

ReplaySubject有一個緩存全部推向它數據的特性,當一個新的subscription創建,時間流將會從新開始推向subscriber,以後的就像 PublishSubject 實現同樣。在看ReplaySubject的第二個例子能夠知道,緩存全部的不是一個好主意,這樣 observable 序列會執行很長時間,咱們可使用 ReplaySubject.createWithSize 限制緩存的大小。在第三個例子中能夠看出使用 ReplaySubject.createWithTime 限制緩存的時間。spa

輸出:日誌

BehaviorSubject

BehaviorSubject僅僅保留最後一個值,相似於 ReplaySubject 設置緩存一個,當建立的時候,subscription會執行。第二個例子,執行 onCompleted()方法,這是最後一個事件。第三個例子展現能夠設置初始值。server

日誌輸出:繼承

AsyncSubject

AsyncSubject 也能夠緩存最後一個值,區別是在 sequence  完成以前不會輸出任何值。接口

日誌輸出:事件

原文地址:

https://github.com/Froussios/Intro-To-RxJava/blob/master/Part%201%20-%20Getting%20Started/2.%20Key%20types.md

相關文章
相關標籤/搜索