当前位置: 首页 > 知识库问答 >
问题:

快照侦听器如何处理脱机数据?

宣星光
2023-03-14

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

以下是一些背景:

我的应用程序显示了一个笔记列表,每一个笔记都绑在一个标签上。因此,在创建便笺时,我必须提供标签列表(在对话框中,响应“选择标签”按钮),该列表将由查询上的快照侦听器提供。由于创建便笺是一个单独的活动,所以每次用户创建便笺时,都必须提供完整的标签列表。

    null

共有1个答案

方嘉言
2023-03-14

快照侦听器是否足够聪明,可以每隔一次从缓存中取出数据,除了第一次?(“第一次”将在30分钟后侦听器过期,或者Firestore清除缓存以节省空间,对吗?)

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

  • 如何在MVVM架构Android的云firestore实时更新中包含源缓存
  • FireStore的脱机数据保存限制是多少?

频繁地连接和分离listener有什么影响?我正在activity的onStart()中附加侦听器,并删除它的onStop()。在这里,用户可以在应用程序之间切换,从其他源复制数据并将其添加到便笺中,使监听器分离/附加。这会影响我的读数吗?

Cloud Firestore中的侦听器很便宜,您不应该担心文档附带大量的侦听器。连接和分离监听器是继续进行的方法。在活动被破坏之前,必须分离监听器,正如我在下面的文章中所解释的:

  • 如何在RecyclerView项中设置addSnapshotListener并在PopulateViewWholder中删除?

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

当您使用get()时,这意味着您只获取一次数据。它是Firebase实时数据库中的AddListenerforSingleValueEvent()的对应项。

 类似资料:
  • 问题内容: 我现在正在与Firestore合作,但分页有一些问题。 基本上,我有一个集合(假设有10个项目),其中每个项目都有一些数据和时间戳。 现在,我正在获取前3个项目,如下所示: 在快照侦听器中,我保存了快照中的最后一个文档,以便将其用作下一页的起点。 因此,有时我会要求下一页类似的项目: 现在我的前端中有从索引0到索引5(共6个)的项目。整齐! 如果索引4处的文档现在将其时间戳更新为整个集

  • 但我需要在通过快照获取所有数据后调用一个方法。如何实现?我应该测试什么?

  • 我尝试将在Apache Camel处理器中处理的数据推送到侦听器类。在处理器类实例中,我尝试在Camel上下文的实例化期间注册侦听器,但不知何故失败了。也许我在这里根本错误,这是不可能的。如果是这种情况,最好你告诉我。 我有一个Apache Camel路由,从ActiveMQ服务器获取JSON消息,并将这些JSON推送到一个自定义处理器类,该类由Camel-Spring XML定义: 我的想法是,

  • 女士们先生们晚上好, 我有一个Java Swing的问题,我无法解决,也许你可以帮助我。在这里: 我有一个使用BorderLayout的JFrame和许多JPanel 每次我需要设置一个新屏幕(即,从主菜单,当单击搜索按钮时,转到搜索菜单),我只需删除位于中心的组件(JPanel),并将新屏幕(新JPanel)放在中心 这样,我不会在每次我想显示新屏幕时调用所有的页眉和页脚对象 这个系统一切正常,

  • 为更好的保证客户资产安全,在营销通的【设置】-【安全管理】可开启手机号脱敏; 开启后将对营销通内所有的表单收集的用户手机号、营销用户的手机号显示进行脱敏处理,用户无法查看或导出所收集表单记录中的手机号信息。 示例: 脱敏前:13800000000 脱敏后:138**

  • 在本讲中,我们将学习如何处理捕获到文件中的数据包。 WinPcap提供了很多函数来将网络数据流保存到文件并读取它们 -- 本讲将教你如何使用这些函数。我们还将看到如何使用WinPcap内核堆特性来获取一个高性能的堆。(请注意:此时,由于一些有关新内核缓冲的问题,这些特性将无法使用) 堆文件的格式是libpcap的一种。这种格式中,包含了被捕捉到的包的二进制数据,并且,这种格式是许多网络工具所使用的