【问题标题】:Do I have to always remove the listener in Firestore?我是否必须始终删除 Firestore 中的侦听器?
【发布时间】:2018-11-24 06:23:21
【问题描述】:

当我收听 Firestore 数据库时,我实际上很困惑删除侦听器有什么好处。我试图找到文档,但我找不到它

我通常总是删除viewWillDisappear 中的监听器。从这里的视频https://www.youtube.com/watch?v=rvxYRm6n_NM 据说移除监听器的好处是减少电池和数据的使用,因此我认为如果我总是在视图消失之前移除监听器会很好。

var userListener : ListenerRegistration?

override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)

        // removing listener
        guard let userListener = userListener else {return}
        userListener.remove()

    }

但是当我在这里阅读 Firestore 定价时 https://firebase.google.com/docs/firestore/pricing

据说:

此外,如果监听器断开连接超过 30 分钟(对于 例如,如果用户离线),您将被收取阅读费用 如果您发出了全新的查询。

如果我删除监听器,它是否与断开连接一样?因为它会影响文档读取的数量。

那么什么是移除监听器的最佳时间或者移除监听器的优点和缺点是什么?

【问题讨论】:

    标签: ios firebase firebase-realtime-database listener google-cloud-firestore


    【解决方案1】:

    在我看到的大多数情况下,当需要数据的视图消失时,开发人员会移除他们的侦听器。当您重新连接侦听器时,这可能确实需要在服务器上读取其他文档,以检查它们是否已更新。但另一种方法是保持连接打开,这可能会导致额外的电池消耗和带宽使用。其中哪一个更适合您的应用,只有您自己知道。

    【讨论】:

    • 我还要补充一点,如果同一个文档在您的侦听器运行时多次更改并且您的视图在后台,那么您还将为用户永远不会看到的读取付费。
    • Detach Listener Docs...监听器是否智能(即知道它正在运行并在取消订阅时关闭)通过在第二次调用 onSnapshot 时分离?
    • 这听起来像是一个新问题@ExcessJudgment。如果您可以在该问题中包含更多详细信息以及可能的代码示例,那也很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多