gpt4 book ai didi

android - 如何读取 Firebase 节点的所有子节点并监控更改

转载 作者:行者123 更新时间:2023-11-29 18:54:26 24 4
gpt4 key购买 nike

我想读取一个节点的所有子节点,然后跟踪之后发生的任何更改。一个用例可能是本地缓存,在我知道它已填充之前,我想推迟使用缓存。

我能想到的一种方法是首先调用 Query.addListenerForSingleValueEvent() 来获取初始状态。获得结果后,我知道我的本地缓存已填充,我现在可以调用 Query.addChildEventListener() 来获取有关何时添加和删除子项的更新。

但是,这似乎效率低下 - 现在整个子列表通过网络发送了两次,我需要添加一个检查以跳过来自 addChildEventListener() 的条目,我已经从addListenerForSingleValueEvent()

这没什么大不了的,但我想知道是否有更好的方法 - 难道没有一种方法可以简单地调用 addChildEventListener() 并在所有条目都已发送后获得信号吗?

最佳答案

要开始同步数据并且知道初始同步何时完成,您需要添加两个监听器。

  1. 一个 ChildEventListener 来处理实际的更新。
  2. 一个 ValueEventListener,用于检测何时发送了完整的更新。

对于来自数据库的初始数据,您的ChildEventListener.onChildAdded 将首先为每个子节点调用。之后将调用 ValueEventListener.onDataChange

因此,一旦 onDataChange 被调用,您就可以知道所有初始数据已加载。如果您只关心此初始数据是否完整,您可以使用 addSingleValueEventListener 注册此监听器,以便它在初始同步后分离。

请注意,Firebase 仅传输一次数据,即使该数据有多个监听器也是如此。因此,如果您将两个监听器附加到同一位置,则数据只会被读取一次。

关于android - 如何读取 Firebase 节点的所有子节点并监控更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50205574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com