Firebase 实时数据库下载使用率非常高

以下代码花费 1MB 从 Firebase 中提取数据。这是正常的吗?我可以做什么来减少它?因为它的成本太高了。我认为有更好的方法。有人可以帮忙吗?


    mDatabaseRef.child("FalMetinleri").addListenerForSingleValueEvent(new ValueEventListener() {

    @Override

    public void onDataChange(DataSnapshot dataSnapshot) {


        long KapasiteGiris= dataSnapshot.child("giris").child(finalKategoriCinsiyet).child(finalKategoriGiris).getChildrenCount();

        long KapasiteKarsilama= dataSnapshot.child("karsilama").getChildrenCount();

        long KapasiteAskDurumu1= dataSnapshot.child("askDurumu").child(finalKategoriCinsiyet).child(finalKategoriAskdurumu).getChildrenCount();

        long KapasiteAskDurumu2= dataSnapshot.child("askDurumu2").child(finalKategoriCinsiyet).child(finalKategoriAskdurumu).getChildrenCount();

        long KapasiteisDurumu1= dataSnapshot.child("isDurumu").child(finalKategoriCinsiyet).child(finalKategoriMeslek).getChildrenCount();

        long KapasiteisDurumu2= dataSnapshot.child("isDurumu2").child(finalKategoriCinsiyet).child(finalKategoriMeslek).getChildrenCount();

        long KapasiteBitis= dataSnapshot.child("bitis").child(finalKategoriCinsiyet).child(finalKategoriBitis).getChildrenCount();


        kapasite[0] = KapasiteGiris;

        kapasite[1] = KapasiteKarsilama;

        kapasite[2] = KapasiteAskDurumu1;

        kapasite[3] = KapasiteAskDurumu2;

        kapasite[4] = KapasiteisDurumu1;

        kapasite[5] = KapasiteisDurumu2;

        kapasite[6] = KapasiteBitis;


        @Override

        public void onCancelled(@NonNull DatabaseError databaseError) {


        dialogFragment.dismissAllowingStateLoss();


   }

});

输出:


       KapasiteGiris:8

       KapasiteKarsilama:5

       KapasiteAskDurumu1:4

       KapasiteAskDurumu2:14

       KapasiteisDurumu1:5

       KapasiteisDurumu2:4

       KapasiteBitis:13

CLI 报告:

https://img1.mukewang.com/650ad49b0001a92804840131.jpg

偶然的你
浏览 95回答 2
2回答

海绵宝宝撒

这里唯一重要的代码是附加侦听器的查询:mDatabaseRef.child("FalMetinleri").addListenerForSingleValueEvent()它所做的就是获取节点“FalMetinleri”下的所有内容。侦听器内的所有其他代码不会消耗更多数据,因为该子级的整个快照已经在内存中。看起来该快照中有大约 1MB 的数据。如果您不想要该子级的全部内容,则可以单独请求其中的每个嵌套子级。这将需要为每个子项执行一个查询,并为每个子项提供一个新的侦听器。

蓝山帝景

如果每个节点内都有大量数据,则 getChildrenCount() 是一个不好的做法。你应该尝试firestore。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java