簡體   English   中英

RxJava2從偵聽器創建Flowable並在最后刪除偵聽器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM