Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何按顺序执行android firebase multiple childeventlistiner_Android_Firebase Realtime Database - Fatal编程技术网

如何按顺序执行android firebase multiple childeventlistiner

如何按顺序执行android firebase multiple childeventlistiner,android,firebase-realtime-database,Android,Firebase Realtime Database,我在一个活动中有4个ChildEventListener。当活动启动第四个ChildEventListener时,将执行第一个,然后执行第三个、第二个、第1个,并且在某个时间,它将以1、2、3、4的相反顺序执行。所以它不是按顺序加载的。下面提到了ChildEventListener侦听器示例 AfirebaseDatabaRef.addChildEventListener(new ChildEventListener() { @Override public v

我在一个活动中有4个ChildEventListener。当活动启动第四个ChildEventListener时,将执行第一个,然后执行第三个、第二个、第1个,并且在某个时间,它将以1、2、3、4的相反顺序执行。所以它不是按顺序加载的。下面提到了ChildEventListener侦听器示例

 AfirebaseDatabaRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

        }

        @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 databaseError) {

        }
    });

BfirebaseDatabaRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

        }

        @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 databaseError) {

        }
    });

我认为您不太了解这些侦听器,只为注册到该节点的节点调用回调,而不是其他节点,因此如果您有多个节点,并且每个节点都注册了回调,当任何节点发生更改时,只会触发相应的回调,因此,顺序应该是节点中的更改,而不是回调,我希望这能回答您的问题。

您到底为什么希望它们按顺序执行。他们是监听器,应该在什么时候执行。如果你真的非常渴望序列执行,你需要相应地编写你的逻辑,或者创建一个状态机制。这听起来像是一个暂时的问题。这听起来也像是预期的行为:侦听器将启动以加载其数据。你想通过这些听众实现什么?也许有一个简单的方法可以得到你想要的。