我有一个Fragment,然后做各种事情,首先,我恢复了设备的当前位置(我在Firebase Realtime Database中拥有一部分,因为该应用可以私下保存用户的位置,在此过程中片段我搜索所有附近的用户,并在一个包含我发现的用户的所有键(uid)的列表中进行迭代。在此迭代中,我为每个键添加了一个侦听器,以恢复该用户的所有数据。
即使我仅从该用户检索一个字段,第一个onDataChange仍会花费很长时间,介于38到75秒之间。
我的代码是:
public void onGeoQueryReady() {
// I have here a List of keys (uid)
for (String key : List_keys) {
userListener.child(key).child("token").addListenerForSingleValueEvent(new ValueEventListener() {
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.d(Constants.TAG, "onDataChange: token: "+dataSnapshot.getValue());
}
}
}
}
为什么要花这么长时间?
编辑(10/09/2019): 请注意,在示例代码中,我仅恢复数据库中对象的“令牌”字段,但问题仍然存在。在下一段中,我添加了数据库结构的图像作为链接。