Android XMPP 統合に asmack API を使用しています...
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);