XMPP:Asmack Connection PacketListener问题...

Vis*_*har 4 android xmpp smack asmack

我正在使用asmack api进行Android XMPP集成...

在成功验证xmpp连接后,我已使用PacketListener进行传入消息通知.

我的应用是基于标签的应用.当我通过单击好友列表转移到聊天活动时,我的数据包监听器将添加到OnCreate方法的连接中.

问题是,很多时候我移动到这个屏幕,添加了多个侦听器,并且我多次获得相同的消息.

这个问题的解决方案?

PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
        PacketListener pListener = new PacketListener() {
            public void processPacket(Packet packet) {
                Message message = (Message) packet;
                if (message.getBody() != null) {
                    String fromName = StringUtils.parseBareAddress(message
                            .getFrom());
                    Log.i("XMPPClient", "Got text [" + message.getBody()
                            + "] from [" + fromName + "]");
                    messages.add(fromName + ":");
                    messages.add(message.getBody());
                    // Add the incoming message to the list view
                    mHandler.post(new Runnable() {
                        public void run() {
                            setListAdapter();
                        }
                    });
                }
            }
        };

        connection.addPacketListener(pListener, filter);
Run Code Online (Sandbox Code Playgroud)

Gau*_*ora 5

@Vishal.您不应该在任何活动文件中添加此侦听器,只需在Android服务中添加这些侦听器,这些侦听器应始终使用单个实例运行.

谢谢