问题描述
我正在构建一个 Flutter 应用程序,我正在使用流订阅 Firestore 查询结果。不幸的是,我不明白快照监听器指标是如何工作的,结合文档中的这个花絮:
27 个峰值是否意味着我以某种方式创建了 27 个听众(当我应该创建一个时)?我很困惑。
还要注意,我与我的应用程序进行了 0 次交互,只是让它继续运行..
解决方法
在 Firestore 中,每次添加 '$'
方法时,都会为该用户创建一个新的快照侦听器。
因此,根据您的打印,您有 1 个用户连接到您的应用程序(1 个活动连接),并且该用户附加了 27 个侦听器。
因此,您似乎是从 27 个 Firestore 查询中获得实时更新,或者您没有关闭连接。
来自第三个参考,来自 Firebase 文档:
假设用户在手机上打开了您的应用。然后,该应用连接到 Cloud Firestore 并订阅 10 个查询。这会将您的指标增加 1 个活动连接和 10 个快照侦听器。
不好吗?
即使您没有为那些活跃的连接或听众付费,每次阅读/更新文档时,这都会算作一次新的阅读,并且最终会收费。因此,使用过多的侦听器并不是最佳做法。
怎么办?
我要说的第一件事是仔细检查您是否在组件/视图关闭后没有打开监听器。 如果你发现任何,don't forget to detach them.