Firebase DatabaseReference没有删除事件侦听器?

Lio*_*789 1 android listener firebase firebase-realtime-database

嘿,我需要在某个时候删除这个监听器,还是自己删除它?我在我的活动中调用了一个片段,用户可以转到另一个视图而不会被销毁.因此不知道如果我莫名其妙地猜想在删除此onDestroy,onPause打电话?我没有看到删除它的方法,因为它是一个DatabaseReference

这是代码:

private DatabaseReference mDatabase;
  mDatabase.child("projects").orderByChild("viewCount").limitToLast(15).addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 6

作为回答超人链接显示:你确实需要在相反的生命周期事件中删除监听器.

要删除侦听器,您需要保留调用时返回addChildListener()句柄:

Query query = mDatabase.child("projects").orderByChild("viewCount").limitToLast(15);
ChildEventListener listener = query.addChildEventListener(new ChildEventListener() { ...
Run Code Online (Sandbox Code Playgroud)

然后将其传递给removeEventListener():

query.removeChildEventListener(listener);
Run Code Online (Sandbox Code Playgroud)

你可以看到我明确地使用了Query这里,因为那是你实际附加你的听众.但是如果你有一个简单DatabaseReference的相同的方法可用,因为DatabaseReference继承自Query.