切换到Firebase数据库9.4.0内存泄漏

时间:2016-09-09 00:02:29

标签: java android memory-leaks firebase firebase-realtime-database

我最近将我的代码从Firebase Client 2.5.2+切换到Firebase Database 9.4.0,现在我的内存泄漏一直在持续。

这是日志中出现的内容,

   public void getEmail(String uid) {
//        DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); // This is static.. I thought maybe it was because I was instantiating it over and over again...
        Query queryRef = ref.orderByChild("emails").equalTo(uid);
        queryRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                System.out.println("GETKEY: GETUIDS: " + dataSnapshot.getKey());
                String useremail = dataSnapshot.getKey();
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError firebaseError) {

            }
        });
    }

此外,我的典型事件监听器看起来像这样,

{{1}}

我应该删除事件监听器吗?如果是这样,我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:1)

在firebase 3上,回调已经改变。 这就是你通常回电的方式。

queryRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

答案 1 :(得分:1)

弄清楚我自己的问题......

正在使用

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

它多次拉我的整个数据库......

如果从2.5.2 firebase移动使用:

DatabaseReference ref = FirebaseDatabase.getInstance()
    .getReferenceFromUrl("https://<your-app>.firebaseio.com/path/to/data");

作为替代品。