【问题标题】:How to stop snapshot listener which was inside the RecyclerView Adapter?如何停止 RecyclerView 适配器内的快照监听器?
【发布时间】:2019-10-06 04:32:42
【问题描述】:

我只是对 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 并像这样保留快照侦听器,可以吗?
  • 如果没有,有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    如果我不包含 Activity 并像这样保留快照侦听器,可以吗?

    不,不是!当您为listening to realtime updates 调用addSnapshotListener 时,这意味着您附加了一个侦听器,该侦听器会针对数据库中发生的每个更改而被调用。因此,当您的应用关闭时也会发生这种情况,这就是为什么必须在活动被销毁之前detach the listeners

    如果没有,有什么办法可以解决这个问题吗?

    是的,有。请从以下帖子中查看我的答案:

    如果在您的应用程序中您不需要实时获取数据,那么您可以直接在引用上使用get() 调用,它只会读取文档一次。由于它只读取一次,因此没有要删除的侦听器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      相关资源
      最近更新 更多