首页 > 解决方案 > 只需获取新添加的 Child Firebase android

问题描述

我正在尝试获取firebase上新添加的孩子的参考或快照我已经通过不同的方式解决它

myRef.addValueEventListener(new ValueEventListener() {
                       @Override
                       public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                       }
myRef.addChildEventListener(new ChildEventListener() {
                        @Override
                        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {


                        }

                        @Override
                        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s)
 {

                        }

我的问题是两者都返回一个完整的快照意味着firebase中的所有这些节点有没有办法获得新添加的子节点(“这将提高速度”)

标签: androidfirebasefirebase-realtime-database

解决方案


当您将侦听器附加到某个位置或查询时,侦听器最初将使用该位置存在的所有数据或与查询匹配的所有数据触发。数据库没有“新”数据的概念,尽管您的应用程序可能有这个概念。

有几个选项可以减少检索到的数据或传递给侦听器的数据:

  1. 如果您使用磁盘持久性,应用程序可能在其磁盘缓存中拥有数据的先前快照。在这种情况下,仅从服务器检索前一个快照和当前快照之间的增量。但是整个当前快照会传递给您的侦听器,以便您可以正确呈现当前数据的 UI。

  2. 如果您只想处理某个时刻以来的数据,则只需从数据库中请求该数据。您通常可以通过将上次处理的数据的键存储在本地状态中来做到这一点,然后使用这样的查询来仅获取新的更新:

    myRef.orderByKey().startAt("mostRecentKeyWeHaveAlreadyProcessed").add...Listener
    

推荐阅读