2 回答
TA贡献1836条经验 获得超3个赞
监听器被调用并且我的数据加倍并且数据被填充两次的问题。
发生这种情况是因为您同时使用get()
&addSnapshotListener()
来获取数据。实际上意味着您从数据库中获取数据一次又一次,您再次获取数据但实时,这就是您的数据翻倍的原因。如果要实时获取数据,只能使用addSnapshotListener()
. 如果您只想获得一次,只需使用get()
呼叫即可。两种方法具有相同的行为,但在 的情况下addSnapshotListener()
,侦听器保持活动状态,直到您将其删除。
TA贡献1810条经验 获得超4个赞
我有同样的问题,我通过在方法调用结束时使用'return@addSnapshotListener'来解决这个问题。
mFirebaseFireStore.collection(AppConstant.FIREBASE_USER_TABLE).document(key).addSnapshotListener {result,error ->
if(result==null){
error?.message?.let { it1 -> Log.w("Error-Group", it1)
}
return@addSnapshotListener
}
if(result.exists())
{
//some code
}
return@addSnapshotListener
}
添加回答
举报