Android Firebase 实时数据库获取数据太慢

金俊剑

当我使用 firebase 初始化数据和setText在 UI 上时,它延迟了 10~15 秒。另一方面,当我使用 Volley 时,它仅延迟了 1 秒。

为什么我使用 firebase 时速度如此之慢,我该如何修改此代码?

这是我的代码(使用ValueEventListener)和 JSON 树

"couple_profile" : {
"TEST999AhCBcHK32AQzU3JglVbAxhTD6Mn1" : {
  "birthday_1" : "1994-06-29",
  "birthday_2" : "19940629",
  "couple_nick" : "TEST999",
  "exp" : 0,
  "gold" : 0,
  "level" : 1,
  "member" : {
    "AhCBcHK32AQzU3JglVbAxhTD6Mn1" : {
      "FCM" : "d5Y-fl_0VCs:APA91bHX7HA531PXc1e4clUg61uB3XsKlwmQ_2U9OaESUTP0r-dnwbitSvxQ4EDMqPzK-t_5b9qPOhLm01FRffgB9-Ot6bZmx1JzwZvc07yoyhashGUS79E7Dztr2J7NfR1NGXw1LT2V",
      "birthday" : "1994-06-29",
      "name" : "김준겸",
      "phone_number" : "01050639201"
    },
    "FMsH7leNTOXBgbOFoWdaTMjt05T2" : {
      "birthday" : "19940629",
      "name" : "kimGod",
      "phone_number" : "1541"
    }
  },
  "mileage" : 0,
  "name_1" : "김준겸",
  "name_2" : "kimGod",
  "uid_1" : "AhCBcHK32AQzU3JglVbAxhTD6Mn1",
  "uid_2" : "FMsH7leNTOXBgbOFoWdaTMjt05T2"
}


private void get_home_info() {
    valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(final DataSnapshot dataSnapshot) {
            coupleProfile = dataSnapshot.getValue(CoupleProfile.class);
            if (coupleProfile == null) {
                Log.e(TAG, "User " + FirebaseAuth.getInstance().getCurrentUser().getEmail() + " is unexpectedly null_1");
                Toast.makeText(Home_Fragment.this.getContext(), "Error_1", Toast.LENGTH_SHORT).show();
            } else {

                StorageReference storageRef2 = storage.getReferenceFromUrl("FirebaseURL").child("Profile_image/" + FirebaseAuth.getInstance().getCurrentUser().getUid());

                Glide.with(getContext()).using(new FirebaseImageLoader()).load(storageRef2).centerCrop()
                        .bitmapTransform(new CropCircleTransformation(new CustomBitmapPool()))
                        .into(me_view);
                SharedPreferences.Editor sh = home_info.edit();

                if (My_UID.equals(coupleProfile.uid_1)) {
                    my_number = 1;
                    sh.putString("my_name",coupleProfile.name_1);
                    sh.putString("op_name",coupleProfile.name_2);
                    sh.apply();
                    my_name_text.setText(coupleProfile.name_1);
                    op_name_text.setText(coupleProfile.name_2);
                    state_text.setText(coupleProfile.state_1);
                    op_state_text.setText(coupleProfile.state_2);
                    StorageReference storageRef = storage.getReferenceFromUrl("FirebaseURL").child("Profile_image/" + coupleProfile.uid_2);
                    Glide.with(getContext()).using(new FirebaseImageLoader()).load(storageRef).centerCrop()
                            .diskCacheStrategy(DiskCacheStrategy.ALL)
                            .bitmapTransform(new CropCircleTransformation(new CustomBitmapPool()))
                            .into(friend_view);

                } else if (My_UID.equals(coupleProfile.uid_2)) {
                    my_number = 2;
                    sh.putString("my_name",coupleProfile.name_2);
                    sh.putString("op_name",coupleProfile.name_1);
                    sh.apply();
                    my_name_text.setText(coupleProfile.name_2);
                    op_name_text.setText(coupleProfile.name_1);
                    state_text.setText(coupleProfile.state_2);
                    op_state_text.setText(coupleProfile.state_1);

                    StorageReference storageRef = storage.getReferenceFromUrl("FirebaseURL").child("Profile_image/" + coupleProfile.uid_1);

                    Glide.with(getContext()).using(new FirebaseImageLoader()).load(storageRef).centerCrop().diskCacheStrategy(DiskCacheStrategy.SOURCE)
                            .bitmapTransform(new CropCircleTransformation(new CustomBitmapPool()))
                            .diskCacheStrategy(DiskCacheStrategy.ALL)
                            .into(friend_view);


                } else {
                    Log.e(TAG, "User " + FirebaseAuth.getInstance().getCurrentUser().getEmail() + " is unexpectedly null_2");
                    Toast.makeText(Home_Fragment.this.getContext(), "Error", Toast.LENGTH_SHORT).show();
                }

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.w(TAG, "onCancelled: ", databaseError.toException());

        }
    };
    ref = databaseReference.child("couple_profile").child(room_token);
    ref.addValueEventListener(valueEventListener);
}
彼得·哈达德

我认为如果您从 firebase 使用此方法,您将有更好的数据加载:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

使用上面的代码,解释一下:

Firebase 为离线数据提供了强大的支持。当没有互联网连接时,它会自动离线存储数据。当设备连接到互联网时,所有数据将被推送到实时数据库。但是,即使应用程序重新启动,启用磁盘持久性也会将数据离线存储。

还尝试检索数据 onStart()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android:Firebase实时数据库

来自分类Dev

首次安装android应用时,如何从Firebase实时数据库获取数据库

来自分类Dev

Firebase 实时数据库读写数据协议与android

来自分类Dev

如何从android中的firebase实时数据库中获取数据

来自分类Dev

Firebase实时数据库Android Java

来自分类Dev

如何从Android中的Firebase实时数据库获取价值?

来自分类Dev

如何从Android中的firebase实时数据库中获取最后一个数据

来自分类Dev

如何在firebase实时数据库android中的唯一键下获取特定节点

来自分类Dev

Firebase实时数据库通过uid检索数据并将其放入Varable Kotlin android

来自分类Dev

在 Android 上的 Firebase 实时数据库中移动数据(复制然后删除)

来自分类Dev

Android Firebase - 从 Firebase 实时数据库中检索特定值

来自分类Dev

如何从Firebase中的实时数据库获取数据

来自分类Dev

Firebase 实时数据库,从键值对中获取数据

来自分类Dev

如何获取firebase实时数据库的数据

来自分类Dev

无法从 Firebase 实时数据库获取数据

来自分类Dev

Android中Firebase实时数据库的最大缓存大小

来自分类Dev

Firebase实时数据库未在Android调试APK版本上返回所有值

来自分类Dev

Android Kotlin Firebase实时数据库:RecyclerView显示为空

来自分类Dev

Firebase Android应用程序-不更新实时数据库

来自分类Dev

Firebase实时数据库写崩溃的Android应用程序

来自分类Dev

Firebase实时数据库未在Android调试APK版本上返回所有值

来自分类Dev

Android应用程序离线使用时,Firebase实时数据库崩溃

来自分类Dev

如何在 Firebase 实时数据库 Android 中实现等效的 .contains(SomeText)?

来自分类Dev

“removeEventListener”(android)是否关闭 Firebase 实时数据库连接?

来自分类Dev

Firebase 实时数据库 - 关于事件 - Javascript Deltasnapshot 和 Android Java DataSnapshot 之间的区别

来自分类Dev

Android - 内存成本 - Firebase 实时数据库 x Room Persistence Library

来自分类Dev

Android - 将字符串转换为列表以推送到 Firebase 实时数据库

来自分类Dev

列表视图从android中firebase的实时数据库中检索一项

来自分类Dev

身份验证和实时数据库中的 Android Firebase 相关错误

Related 相关文章

  1. 1

    Android:Firebase实时数据库

  2. 2

    首次安装android应用时,如何从Firebase实时数据库获取数据库

  3. 3

    Firebase 实时数据库读写数据协议与android

  4. 4

    如何从android中的firebase实时数据库中获取数据

  5. 5

    Firebase实时数据库Android Java

  6. 6

    如何从Android中的Firebase实时数据库获取价值?

  7. 7

    如何从Android中的firebase实时数据库中获取最后一个数据

  8. 8

    如何在firebase实时数据库android中的唯一键下获取特定节点

  9. 9

    Firebase实时数据库通过uid检索数据并将其放入Varable Kotlin android

  10. 10

    在 Android 上的 Firebase 实时数据库中移动数据(复制然后删除)

  11. 11

    Android Firebase - 从 Firebase 实时数据库中检索特定值

  12. 12

    如何从Firebase中的实时数据库获取数据

  13. 13

    Firebase 实时数据库,从键值对中获取数据

  14. 14

    如何获取firebase实时数据库的数据

  15. 15

    无法从 Firebase 实时数据库获取数据

  16. 16

    Android中Firebase实时数据库的最大缓存大小

  17. 17

    Firebase实时数据库未在Android调试APK版本上返回所有值

  18. 18

    Android Kotlin Firebase实时数据库:RecyclerView显示为空

  19. 19

    Firebase Android应用程序-不更新实时数据库

  20. 20

    Firebase实时数据库写崩溃的Android应用程序

  21. 21

    Firebase实时数据库未在Android调试APK版本上返回所有值

  22. 22

    Android应用程序离线使用时,Firebase实时数据库崩溃

  23. 23

    如何在 Firebase 实时数据库 Android 中实现等效的 .contains(SomeText)?

  24. 24

    “removeEventListener”(android)是否关闭 Firebase 实时数据库连接?

  25. 25

    Firebase 实时数据库 - 关于事件 - Javascript Deltasnapshot 和 Android Java DataSnapshot 之间的区别

  26. 26

    Android - 内存成本 - Firebase 实时数据库 x Room Persistence Library

  27. 27

    Android - 将字符串转换为列表以推送到 Firebase 实时数据库

  28. 28

    列表视图从android中firebase的实时数据库中检索一项

  29. 29

    身份验证和实时数据库中的 Android Firebase 相关错误

热门标签

归档