Bir asmack paketi için bir dinleyici yazmaya çalışıyorum. Neler biterse dinleyici bazen paketi almaz ve işleyemez. İşte kod bazı şudur: Bu bir asynctask ait doInBackground (dize ... params) parçanın içine ISSmack Packet Listener Çalışmıyor
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));
Not söyledi.
paket kullanılarak gönderilirken:
JIDIQ bir asmack IQ olanJIDIQ.setPacketID(lastCustomIQId);
JIDIQ.setFrom(XMPPMethods.getCurrentUserFullUserName());
JIDIQ.setType(Type.GET);
XMPPMethods.getConnection().sendPacket(JIDIQ);
. Bu kod, her zaman doğru EN ÇOK çalışır. Ama bazen PacketListener gönderilen paketi almaz. Bunun yerine bir PacketCollector kullanmalı mıyım yoksa dinleyici bir şekilde ölüyor mu diye merak ediyorum. Bunun paketin neden alınamayacağını bilen var mı? Bu konu hakkında herhangi bir bilgi çok takdir edilecektir!
Bunu test ettim ve paket kimliği her zaman filtre kimliğiyle eşleşiyor. Ayrıca ID olarak bir sabit kullanmayı ve farklı bir filtre kullanmayı denedim. Üç filtre ayarının tümü aynı sonucu alır. Not: Etkinliği girerken, paket ilk kez alınırsa, IQ'yu kaç kez sorguladığımı ve paketi gönderdiğim zaman, her seferinde çalışacaktır. Tersi de doğrudur, aktiviteye girdiğimde ve paket dinleyici tarafından alınmazsa, gelecekteki IQ paketleri dinleyici tarafından alınmayacaktır. –
@JonathanCornwell Dinleyiciyi kaydettiğiniz bağlantının paketi alanla aynı olup olmadığını kontrol ettiniz mi? (örneğin, istemci bağlantıyı keser ve sonra yeniden bağlanır çünkü bağlantı değişir, ancak yeni bağlantı dinleyiciye sahip değildir) –
Bunu test ettim, ancak bağlantı hiç değişmez. Bağlantının hiçbir zaman aynı sonuçlarla değişmediğinden emin olmak için tüm etkinliklerin bağlantının herkese açık bir sürümüne erişmesini sağladım. Güncelleme: Etkinliği açtığımda ve dinleyici çalıştığı zaman, gönderilen her paket için doğru şekilde çalışacak gibi görünüyor. Ancak dinleyici çalışmadığında, kendisine gönderilen her paket için çalışmayacaktır. Aktiviteyi kapatmak ve yeniden açmak bunu değiştirebilir (çalışıp çalışmaz), ancak garip olan şey, aktiviteyi açmanın/kapatmanın dinleyiciyi etkileyen hiçbir şeyi değiştirmemesidir. –