Java 如何在执行其他代码之前首先获取引用上的数据?

Java 如何在执行其他代码之前首先获取引用上的数据?,java,android,firebase,Java,Android,Firebase,我需要从Firebase上的特定位置获取所有数据,并在处理这些数据之前将其放入ArrayList中。我有这样的想法: final ArrayList<String> data = new ArrayList<String>(); Firebase ref = rootRef.child("data"); ref.addListenerForSingleValueEvent(new ValueEventListener() {} @Override publ

我需要从Firebase上的特定位置获取所有数据,并在处理这些数据之前将其放入
ArrayList
中。我有这样的想法:

final ArrayList<String> data = new ArrayList<String>();
Firebase ref = rootRef.child("data");
ref.addListenerForSingleValueEvent(new ValueEventListener() {}
    @Override
    public void onDataChange(DataSnapshot snap) {
        for (Object obj : snap.getChildren) {
            data.add(obj.getValue().toString());
        }
    }
);
processData(data);
final ArrayList data=new ArrayList();
Firebase ref=rootRef.child(“数据”);
ref.addListenerForSingleValueEvent(新值EventListener(){}
@凌驾
公共void onDataChange(DataSnapshot快照){
用于(对象对象对象:snap.getChildren){
data.add(obj.getValue().toString());
}
}
);
过程数据(数据);
我对这类东西相当陌生,但我认为这并不好,尤其是当有大量数据需要读取,并且用户的连接速度较慢时


你知道如何解决这个问题吗?

我对Firebase不太熟悉,但如果他们没有类似于Android加载程序回调“onLoadFinished(){…}”的功能,我会感到震惊。您应该在Firebase中找到类似的内容,并从中调用“processData(data)”。

当检索到位置的当前数据时,将调用
onDataChange()
方法。然后将此数据作为
DataSnapshot
传入。我不确定您在问什么。加载数据所需的时间与加载数据所需的时间相同。如果希望更快地调用
onDataChange()
,则可能应该加载更少的数据,例如
ref.orderByKey().limitToLast(10)。添加…
。但这当然取决于数据结构。@FrankvanPuffelen我想从数据库中检索所有数据,并在处理这些数据之前将其存储在列表中。这不正是您的代码目前所做的吗?