2 回答
TA貢獻1836條經(jīng)驗 獲得超3個贊
監(jiān)聽器被調用并且我的數(shù)據(jù)加倍并且數(shù)據(jù)被填充兩次的問題。
發(fā)生這種情況是因為您同時使用get()&addSnapshotListener()來獲取數(shù)據(jù)。實際上意味著您從數(shù)據(jù)庫中獲取數(shù)據(jù)一次又一次,您再次獲取數(shù)據(jù)但實時,這就是您的數(shù)據(jù)翻倍的原因。如果要實時獲取數(shù)據(jù),只能使用addSnapshotListener(). 如果您只想獲得一次,只需使用get()呼叫即可。兩種方法具有相同的行為,但在 的情況下addSnapshotListener(),偵聽器保持活動狀態(tài),直到您將其刪除。
TA貢獻1810條經(jīng)驗 獲得超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
}
添加回答
舉報
