Quiero ejecutar el método solo 1 vez en hilo :
Cuando hago : "muc2.addMessageListener(packetListener);" solo lo quiero llamar 1 vez, porqué dentro de este tengo : "onMessageReceivedListener.onMessageReceived(messa ge);" que gracias a esto puedo recuperar todos los mensages anteriormente ...., pero cuando escribo
jo envio : hola
jo recibo : hola --> por que recibo lo que envio ?? !! fácil ese mètodo se encarga de recuperar los paquetes..
él recibe : hola
él envio : bien
él recibo : bien -> por que recibo lo que envio ?? !! fácil ese mètodo se encarga de recuperar los paquetes..
yo recibo : bien
Código Java:
Ver original
@Override public void run() { // Chat action 1 -- create connection. config = new ConnectionConfiguration(CHAT_SERVER); connection = new XMPPConnection(config); try { connection.connect(); connection.login(chatLogin, password); // Chat action 2 -- create chat manager. chatManager = connection.getChatManager(); // Chat action 3 -- create chat. chat = chatManager.createChat(friendLogin, messageListener); // Set listener for outcoming messages. chatManager.addChatListener(chatManagerListener); // Discover whether [email protected] supports MUC or not // The room service will decide the amount of history to send muc2.join(chatLogin); muc2.invite(friendLogin, "Welcome!"); Log.d("friendLogin ->",friendLogin); // Set listener for outcoming messages. //chatManager.addChatListener(chatManagerListener); muc2.addMessageListener(packetListener); addListenerToMuc(muc2); //[email protected] --- el meu Message message = new Message(friendLogin + "@muc.chat.quickblox.com"); message.setBody("Join me for a group chat!"); connection.sendPacket(message); } catch (XMPPException e) { e.printStackTrace(); } } }).start(); } PacketListener packetListener = new PacketListener() { @Override public void processPacket(Packet packet) { Message message = (Message)packet; try { muc2.sendMessage(message); onMessageReceivedListener.onMessageReceived(message); } catch (XMPPException e) { // TODO Auto-generated catch block e.printStackTrace(); } //System.out.println("got message " + message.toXML()); } };
Lo que quiero que el Listener (packetListener ) solo se ejecute 1 vez puedo hacerlo ?
he intentado de todo , booleanas , condiciones , whiles , dowhiles , arrays , listadearrays (para llenarlo independientemente y luego mirar si esta lleno ) , etc... no veo manera de ejecutar ese método 1 sola vez ...
--- > Remover lis listeners : http://stackoverflow.com/questions/16164065/how-to-remove-packet-listeners-of-xmppclient-using-smack
Espero explicarme correctamente.