Firebase Db查询快照和常规DbRef快照之间有什么区别

时间:2018-01-07 11:19:43

标签: android performance firebase-realtime-database

想知道使用Query dataSnapshot是否有特定的原因或好处,而不是常规的DataBase Reference dataSnapshot。请参阅示例 - 我试图通过playerName查找有关玩家的信息。我的Json Hierarchy是这样的: -

播放器>> PlayerId(firebase生成的Id)>> {playerName,playerAge,playerScore}

我可以两种方式做到这一点 选项1 ...带查询

 gamesDBref = FirebaseDatabase.getInstance().getReference("Players");
    Query query = gamesDBref.orderByChild("playerName").equalTo("FlashBoy");
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Log.e("R&D", "toString()" + dataSnapshot.toString());
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

选项2 ...带数据库参考

gamesDBref = FirebaseDatabase.getInstance().getReference("Players");
gamesDBref.orderByChild("playerName").equalTo("FlashBoy").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        Log.e("R&D", "toString()" + dataSnapshot.toString());
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });

我的结果都是一样的,但其中一种效率低下吗? 谢谢你的帮助/知识。

1 个答案:

答案 0 :(得分:1)

这两段代码以完全相同的方式完成相同的操作。只使用当前的片段,它们甚至可以创建完全相同数量的对象。

如果您需要在多个位置使用相同的Query,那么您的第一种方法允许您重复使用相同的Query对象。这会减少内存使用量。

但说实话,它是一种微观优化,不太可能以任何实质性方式提供帮助。