我最近将我的代码从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}}
我应该删除事件监听器吗?如果是这样,我该怎么做?
谢谢!
答案 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");
作为替代品。