我将ChildEventListeners添加到实时数据库中的多个节点。节点可以嵌套也可以不嵌套。我的问题是,如果同时更改其中一些节点,则onChildChanged事件处理程序似乎正在排队。
我将事件侦听器同时循环添加到node_a,node_b,node_c等中,如下所示:
FirebaseDatabase.getInstance().getReference(node).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
但是,如果node_a在node_b之前更改,则不会触发node_b的onChildChanged处理程序,直到对node_a进行的所有处理完成。
这是预期的行为吗?我以为他们会同时开火。
最佳答案
这是预期的。有一个线程可以管理数据库更改中的所有回调。如果您希望并行处理,则必须将工作传递给其他线程,以释放最初调用侦听器的单个线程。
关于java - Firebase Java SDK-多个ChildEventListener排队,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50912883/