Android 在SetCancelable中调用onComplete()

Android 在SetCancelable中调用onComplete(),android,kotlin,rx-java,Android,Kotlin,Rx Java,我正在通过调用observable.create创建一个observable。只要有订户,我就想让它保持活力。在这种情况下,setcancelable似乎是唯一可以调用onComplete()的地方,还是应该调用它 val data: Observable<Data> get() = Observable.create { emitter -> val ref = mDatabase.child("users").child("data")

我正在通过调用
observable.create
创建一个observable。只要有订户,我就想让它保持活力。在这种情况下,
setcancelable
似乎是唯一可以调用
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)
        } 
    }
val数据:可观察
get()=Observable.create{emitter->
val ref=mDatabase.child(“用户”).child(“数据”)
val listener=ref.addValueEventListener(对象:ValueEventListener{
已取消覆盖乐趣(p0:DatabaseError){
emitter.onError(p0.toException())
}
覆盖数据更改(p0:DataSnapshot){
Data.parse(p0)?.let{emitter.onNext(it)}
}
})
emitter.setCancelable{
发射器.onComplete()/???
ref.removeEventListener(侦听器)
} 
}

取消时调用
onComplete()
没有任何意义,而且无论如何都会被忽略。所以根本不要调用
onComplete
?取消是由消费者通知源停止同时生成所有事件(包括终端事件)发起的。如果您的源代码是无限的,不要调用
onComplete