Buenas noches, parece fàcil pero no lo es !
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);
// 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);
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.