我将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/

10-08 23:44