【发布时间】:2013-07-18 01:28:36
【问题描述】:
我使用 XMPP server(openFire) 的 Smack 开发了一个聊天应用程序。为了获取传入的消息,我曾经 PacketFilter 这是传入的味精代码:-
PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
connection.addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
Message message = (Message) packet;
incomemsg = message.getBody();
if (incomemsg != null) {
String fromName = StringUtils.parseBareAddress(message.getFrom());
frmname = message.getBody();
Log.i("XMPPClient", "Got text [" + message.getBody() + "] from [" + fromName + "]");
// Add the incoming message to the list view
mHandler.post(new Runnable() {
public void run() {
// show the msg of chat in right side.
showMessage(frmname,false);
scrollContainer.getFocusables(scrollContainer.getChildCount());
}
});
}
}
}, filter);
但我想在活动关闭或停止或销毁期间删除 paketListener。我按照http://community.igniterealtime.org/thread/28921 删除数据包侦听器 但没有找到解决方案。
请检查。谢谢你的时间。
【问题讨论】:
-
不使用
Connection.removePacketListener有什么原因吗? -
不是,但我该如何使用。因为我没有 packetListener 的对象。
-
所以我想在 onStop() 中使用。
-
您需要将 PacketListener 实例存储在类变量中,而不是仅创建本地实例。
-
谢谢,但我不想这样做。可以换个方式吗?