gpt4 book ai didi

android - 查看 Firebase 上的 childEventListener 是否已完成所有数据的加载

转载 作者:IT王子 更新时间:2023-10-28 23:56:13 26 4
gpt4 key购买 nike

我正在使用 Firebase 实时数据库为我的 Android 应用程序存储和检索数据。在我的 Activity 中,我使用 childEventListener 从 Firebase 检索所有数据(例如:用户数据列表)。

只要数据没有从数据库中完全检索到,我想显示一个进度条。如何检查所有数据是否已完全检索,以便在数据加载后关闭进度条?

最佳答案

有一种常用方法可以检测 Firebase 何时完成对给定位置上的初始数据的同步。此方法利用 Firebase event guarantees 之一:

Value events are always triggered last and are guaranteed to contain updates from any other events which occurred before that snapshot was taken.

因此,如果您在给定位置同时具有 ValueEventListenerChildEventListener,则保证会调用 ValueEventListener.onDataChange() 所有 onChildAdded() 调用都发生之后。您可以使用它来了解初始数据加载何时完成:

ref.addListenerForSingleValueEvent(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println("We're done loading the initial "+dataSnapshot.getChildrenCount()+" items");
}
public void onCancelled(FirebaseError firebaseError) { }
});
ref.addChildEventListener(new ChildEventListener() {
public void onChildAdded(DataSnapshot dataSnapshot, String previousKey) {
System.out.println("Add "+dataSnapshot.getKey()+" to UI after "+previousKey);
}
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
public void onCancelled(FirebaseError firebaseError) { }
});

在我的测试运行中,结果如下:

Add -K2WLjgH0es40OGWp6Ln to UI after null
Add -K2YyDkM4lUotI12OnOs to UI after -K2WLjgH0es40OGWp6Ln
Add -K2YyG4ScQMuRDoFogA9 to UI after -K2YyDkM4lUotI12OnOs
...
Add -K4BPqs_cdj5SwARoluP to UI after -K4A0zkyITWOrxI9-2On
Add -K4BaozoJDUsDP_X2sUu to UI after -K4BPqs_cdj5SwARoluP
Add -K4uCQDYR0k05Xqyj6jI to UI after -K4BaozoJDUsDP_X2sUu
We're done loading the initial 121 items

所以你可以使用 onDataChanged() 事件来隐藏进度条。

但要记住一件事:Firebase 不只是加载数据。它不断地将数据从服务器同步到所有连接的客户端。因此,实际上没有任何时刻可以完全检索到数据。

关于android - 查看 Firebase 上的 childEventListener 是否已完成所有数据的加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34530566/

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