Snapshot Listener如何处理脱机数据



我正在使用Firestore for Android。我知道它默认启用了持久性。

以下是一些背景:

我的应用程序显示一个笔记列表,每个笔记都绑定到一个标签。因此,在创建注释时,我必须提供一个标签列表(在Dialog中,响应"选择标签"按钮(,该列表将由Query上的快照侦听器提供给我。由于创建注释是一个单独的Activity,每次用户创建注释时,都必须显示完整的标签列表。

我的问题是:

  1. 快照侦听器是否足够智能,可以每隔一次从缓存中提取数据(第一次除外(?("第一次"将在30分钟后侦听器到期,或者Firestore清除缓存以节省空间,对吧?(
  2. 频繁地连接和分离侦听器会产生什么影响?我在ActivityonStart()中附加侦听器,并将其删除onStop()。在这里,用户可以在应用程序之间切换,从其他来源复制数据,将其添加到笔记中,从而使侦听器分离/附加。这会影响我的阅读量吗
  3. get()在这些情况下会如何表现?(我不喜欢这个,因为它不是实时的(

Firestore在深入研究定价时一直让我感到困惑。需要很好地了解离线数据及其定价方面组件的行为。

快照侦听器是否足够聪明,可以每隔一次从缓存中提取数据(第一次除外(?("第一次"将在30分钟后侦听器到期,或者Firestore清除缓存以节省空间,对吧?(

如果您处于脱机状态,是的,Firestore将从缓存中获取所有数据。当您正在收听实时更新时,就会发生这种情况。另一方面,如果实时更新不是强制性的,您可以简单地使用get()调用并指定源,正如我在以下文章中的回答所解释的:

  • 如何在MVVM架构android中的云firestore实时更新中包含源缓存

关于缓存限制,请查看以下答案:

  • Firestore的离线数据保存限制是多少

频繁连接和分离侦听器会产生什么影响?我将在Activity的onStart((中附加侦听器,并在Stop((中删除它。在这里,用户可以在应用程序之间切换,从其他来源复制数据并将其添加到笔记中,从而使侦听器分离/附加。这会影响我的阅读量吗?

Cloud Firestore中的侦听器很便宜,您应该不要担心文档中有很多侦听器。连接和分离听众是继续进行的方法。必须在活动被破坏之前分离侦听器,正如我在以下帖子中的回答所解释的:

  • 如何在RecyclerView项的populateViewHolder中设置addSnapshotListener并删除

get((在这些场景中的表现如何?(我不喜欢这个,因为它不是实时的(

使用get()时,意味着您只获取一次数据。它是Firebase实时数据库中addListenerForSingleValueEvent()的通讯器。

最新更新