如何删除firestore监听器



如果isNeedToListen = true,我会设置侦听器,否则我会删除它,但它仍然有效,并且当我从不同的帐户进入同一聊天室时,我设置了相互矛盾的侦听器

override fun listenMessage(
receiver_id: String,
user_id: String,
messages: MutableLiveData<ArrayList<Message>>,
onSuccess: (ArrayList<Message>) -> Unit,
isNeedToListen:Boolean
) {
var listenUserMessage: ListenerRegistration? =  null
var listenReceiverMessage: ListenerRegistration? =  null
if(isNeedToListen){
listenUserMessage = database
.collection(KEY_COLLECTION_USERS)
.document(user_id)
.collection(KEY_COLLECTION_CHAT)
.addSnapshotListener { value, error -> ...
}
listenReceiverMessage = database
.collection(KEY_COLLECTION_USERS)
.document(receiver_id)
.collection(KEY_COLLECTION_CHAT)
.addSnapshotListener { value, error ->...
}
}else{
if(listenUserMessage !=null){
listenUserMessage.remove()
}
if(listenReceiverMessage !=null){
listenReceiverMessage.remove()
}
}
}

UPD来自的isNeedToListen

firebaseRepostory.listenMessage(receiver_id, user_id, messages, onSuccess,false)

该代码由onStop()执行

firebaseRepostory.listenMessage(receiver_id, user_id, messages, onSuccess,true)

该代码由onStart()执行

声明一个全局侦听器可以解决这个问题。有关更多信息,请参阅@AlexMamo共享的StackOverflow线程。

最新更新