我正在尝试为 asmack 数据包编写一个侦听器。最终发生的是侦听器有时只是没有获取数据包并对其进行处理。这是一些代码:
try {
XMPPMethods.getConnection().addPacketListener( new PacketListener() {
@Override
public synchronized void processPacket(Packet packet) {
if (packet.getPacketID().equals(lastCustomIQId)) {
android.os.Message msg = new android.os.Message();
msg.obj = privateData;
msg.what = XMPPMethods.ADD_CONTACT_RESULTS;
AddContact.addContactHandler.sendMessage(msg);
}
}
}, new PacketIDFilter(lastCustomIQId));
请注意,这是在 asynctask 的 doInBackground(string... params) 部分内。
正在使用以下方式发送数据包:
JIDIQ.setPacketID(lastCustomIQId);
JIDIQ.setFrom(XMPPMethods.getCurrentUserFullUserName());
JIDIQ.setType(Type.GET);
XMPPMethods.getConnection().sendPacket(JIDIQ);
JIDIQ 是一个 asmack IQ。这段代码大部分时间都正确运行。但有时 PacketListener 只是没有收到发送的数据包。我想知道我是否应该改用 PacketCollector,或者侦听器是否会以某种方式死亡。有谁知道为什么这不会收到数据包?任何有关该主题的知识将不胜感激!