[英]RxJava2 create Flowable from listener and remove listener at the end
我的用例與將RxJava2與Firebase數據庫一起使用有關。
我有一個DatabaseReference ,我可以為它注冊值監聽器。 我可以把它變成像這樣的流動:
disposable = Flowable.create<DataSnapshot>({ s ->
dbRef.addValueEventListener(object : ValueEventListener {
override fun onCancelled(p0: DatabaseError) {...}
override fun onDataChange(value: DataSnapshot) {
s.onNext(value)
}
})
}, BackpressureStrategy.BUFFER)
.subscribe(...)
我希望能夠在丟棄一次性物品時移除聽眾。 知道我怎么能這樣做嗎?
我在rxjava 1中看到了這種可能性 ,但它在rxjava2中不可用
使用RxJava2,您需要使用setCancellable()方法,並將偵聽器刪除代碼放在那里。
當使用Observable.fromEmitter()創建Observable時,這與RxJava1中的Emitter.setCancellation()非常相似。
請聽取akarnokd關於取消的說明:
“但請注意,除非創建邏輯放棄調度程序(通過終止或異步),否則取消邏輯可能永遠不會執行,因為相同的池活動鎖定。” ( RxJava 2:總是取消訂閱.subscribeOn(..)調度程序? )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.