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
。