首先onDataChange太慢

时间:2019-09-09 16:26:14

标签: android firebase firebase-realtime-database geofire

我有一个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): 请注意,在示例代码中,我仅恢复数据库中对象的“令牌”字段,但问题仍然存在。在下一段中,我添加了数据库结构的图像作为链接。

第一遍是locations,对于每个uid,我遍历了所有user data

0 个答案:

没有答案