我正在使用 FirebasechildEventListener
被添加 N 次到Node
从数据库获取数据。
现在我正在尝试删除childEventListener
它似乎不起作用,我得到了重复的数据。
query = FirebaseDatabase.getInstance().getReference()
.child("chat")
.child("room-messages")
.child(roomID)
.orderByChild("timestamp")
.limitToLast(index);
paginationListener = query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.d(TAG, dataSnapshot.getKey() + " - Single Value");
try {
Message message = dataSnapshot.getValue(Message.class);
message.setId(dataSnapshot.getKey());
EventBus.getDefault().post(new GetPaginatedMessage(message));
} catch (RuntimeException e) {
Log.d(TAG, "Type Cast Exception Caught");
}
}
并删除监听器,例如
if (query != null && paginationListener != null) {
query.removeEventListener(paginationListener);
}
它似乎不起作用,我得到了重复的数据。
任何帮助表示赞赏
Calling removeEventListener()
从该位置删除侦听器。在调用它之后,它不会为收到的任何数据触发事件。它可能仍会针对已收到的数据触发一些事件。
乔尼在 firebase-talk 小组中的回答 https://groups.google.com/forum/#!topic/firebase-talk/qBPLgP35QPs关于同样的行为:
事件是异步排队的,并且可能在不同的线程上运行,因此在调用removeEventListener之前可能已经有事件排队了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)