Я использую asmack api для интеграции Android XMPP...
После успешной аутентификации для соединения xmpp я использовал PacketListener для уведомления о входящем сообщении.
Мое приложение представляет собой приложение на основе вкладок. Когда я перехожу к чату, щелкая список друзей, мой прослушиватель пакетов добавляется к соединению в методе OnCreate.
Проблема в том, что сколько раз я перехожу к этому экрану, столько же слушателей добавляется, и я получаю одно и то же сообщение несколько раз.
Anysolution для этой проблемы?
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);