2017-02-26 1 views
1

Mein Anwendungsfall bezieht sich auf die Verwendung von RxJava2 mit Firebase-Datenbank.RxJava2 erstellen Flowable vom Listener und entfernen Listener am Ende

Ich habe eine DatabaseReference und ich kann Wert Listener zu ihm registrieren. I in ein fließfähiges wie diese transformieren können:

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(...) 

Ich möchte in der Lage sein, den Hörer zu entfernen, wenn der wegwerfbare angeordnet ist. Irgendeine Idee, wie ich das tun kann?

ich sah, dass this possibility in rxjava 1 vielleicht war da, aber es ist nicht

Antwort

2

Mit RxJava2 in rxjava2 verfügbar Sie die setCancellable() Methode verwenden müssen, und Ihre Zuhörer Entferncode setzen dort.
Dies ist ähnlich wie Emitter.setCancellation() von RxJava1, beim Erstellen von Observable mit Observable.fromEmitter().

Nehmen Sie auch diese Notiz von akarnokd in Bezug auf Stornierung:
„Aber beachten Sie, dass es sei denn, die schaffen Logik den Scheduler aufgibt (durch Beenden oder gehen async), die Aufhebung Logik gleich Pool Livelock aufgrund nicht immer ausgeführt werden kann.“ (RxJava 2: always unsubscribe on the .subscribeOn(..) scheduler?)