Firebase OnChildAdded()事件在scrollview

时间:2016-08-28 17:03:06

标签: java android firebase firebase-realtime-database

几周前我刚开始学习Firebase for Android,现在我正在创建一个非常基本的聊天应用程序。

当我按下主页按钮然后返回应用程序时出现问题。我认为它再次调用OnChildAdded()事件,因此产生双打。我不知道如何解决这个问题。如果有人能帮助我,我将不胜感激。

这是我遇到麻烦的部分:

public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            //messageText.append(username + ": " + messageReceived + " \n");
            Iterator iterator = dataSnapshot.getChildren().iterator();
            String newmsg = null, theusername = null;
            while (iterator.hasNext()){
                newmsg = (String) ((DataSnapshot) iterator.next()).getValue();
                theusername = (String)  ((DataSnapshot) iterator.next()).getValue();

            }
            messageText.append(theusername + ": " + newmsg + " \n");
            scrollView.postDelayed(new Runnable() {
                @Override
                public void run() {
                    scrollView.fullScroll(ScrollView.FOCUS_DOWN);
                }
            },200);
        }

这是模拟器的图片和我的firebase控制台的结构:

Screenshot

Screenshot

1 个答案:

答案 0 :(得分:0)

如果同一个孩子多次调用onChildAdded(),则非常可能是您连接了多个侦听器。当您的活动变为非活动状态时,您需要detach the listener

 // if you attach like this
 var listener = ref.addChildEventListener(childEventListener);

 // later detach the listener with
 ref.removeEventListener(listener);

分离听众的最佳位置取决于您附加的位置。通常最好考虑对:onCreate() - > onDestroy()onStart() - > onStop()onResume() - > {{1} }。