我想通過傑克Warthon瞭解這個庫的目的: https://github.com/JakeWharton/RxRelayRxJava繼電器VS主題
基本上是:除了沒有來電的onComplete或 onError的能力的主題。受試者處於有害的狀態:當他們收到onComplete或onError時,他們不再可用於移動數據。
我明白了,這是一個有效的使用案例,但上述使用現有主題似乎很容易實現。
不要轉發errors
/completions
事件的主題:
`observable.subscribe({ subject.onNext(it) }, { log error/throw exception },{ ... })`
2.不要暴露的問題,讓你的方法簽名返回一個可觀察的來代替。
fun(): Observable<> { return subject }
我顯然失去了一些東西,我它是什麼非常珍玩!
class MyPublishRelay<I> : Consumer<I> {
private val subject: Subject<I> = PublishSubject.create<I>()
override fun accept(intent: I) = subject.onNext(intent)
fun subscribe(): Disposable = subject.subscribe()
fun subscribe(c: Consumer<in I>): Disposable = subject.subscribe(c)
//.. OTHER SUBSCRIBE OVERLOADS
}
謝謝akarnokd,很高興知道我沒有遺漏任何東西:)關於#2,如果你把你的主題放在包裝類中,你可以有一個方法accept(item){subject.omNext(item)}。而主題仍然是一個私人領域 – feresr
你確定這是唯一的原因,但?爲了避免初學者的錯誤而創建一個全新的圖書館看起來像是矯枉過正。所以將它導入到你的項目中 – feresr
你的意思是[this](https://github.com/JakeWharton/RxRelay/issues/30)?由於內部結構大部分與標準主體相同,並且取消終端事件處理並不是一個重要的性能優勢,這使我們得到了我所寫的內容。 – akarnokd