我只是对Firestore快照侦听器有某些疑问。我是使用它的新手,并且我读过您每次移动到另一个活动时都必须停止快照侦听器。我尝试过:
db.collection("Mydata").document(userID).addSnapshotListener(itemView.getContext(), new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
}
})
但是由于itemView.getContext()
而导致错误。
我的问题是:
Activity
并像这样保留快照侦听器,可以吗?答案 0 :(得分:1)
如果我不包括“活动”并像这样保留快照侦听器,可以吗?
不,不是!当您为listening to realtime updates调用addSnapshotListener
时,这意味着您将附加一个侦听器,该侦听器将针对数据库中发生的每个更改而被调用。因此,当您关闭应用程序时也会发生这种情况,这就是为什么在活动被销毁之前必须强制detach the listeners的原因。
如果没有,有什么办法解决这个问题?
是的,有。请从以下帖子中查看我的答案:
如果您不需要在应用中实时获取数据,则可以直接在引用上直接使用get()调用,该引用仅读取一次文档。由于它只能读取一次,因此没有要删除的侦听器。