在setCancellable中调用onComplete()

时间:2018-08-15 15:38:16

标签: android kotlin rx-java

我通过调用Observable.create来创建一个可观察对象。只要有订阅者,我就想保持它的生命。在这种情况下,setCancellable在我看来是唯一可以调用onComplete()的地方,还是应该完全调用它?

val data: Observable<Data>
    get() = Observable.create { emitter ->
        val ref = mDatabase.child("users").child("data")
        val listener = ref.addValueEventListener(object : ValueEventListener {
            override fun onCancelled(p0: DatabaseError) {
                emitter.onError(p0.toException())
            }

            override fun onDataChange(p0: DataSnapshot) {
                Data.parse(p0)?.let { emitter.onNext(it) }
            }
        })
        emitter.setCancellable { 
            emitter.onComplete() // ???
            ref.removeEventListener(listener)
        } 
    }

0 个答案:

没有答案