Я разработал приложение для чата, используя xmpp с помощью клиента smack. Я использовал фоновый поток для уведомления о входящих сообщениях и работал нормально. Но теперь, когда я нахожусь в просмотре чата, я не хочу получать уведомления о входящих сообщениях. поэтому я удалил chatmangerlistener. Но это не работает .
Я использовал свой второй метод: когда я войду в режим чата, мой фоновый поток будет закрыт. но я видел, что фоновый поток не закрывается и не останавливается. isCancelling дает мне false.
это код: -
public class incomingmsg extends AsyncTask<String, Void, String>
{
String msg;
protected String doInBackground(String... urls) {
connection = XMPPLogic.getInstance().getConnection();
// register listeners
ChatManager chatmanager = connection.getChatManager();
chatmangerlistnr = new ChatManagerListener()
{
@Override
public void chatCreated(final Chat chat, final boolean createdLocally) {
chat.addMessageListener(new MessageListener()
{
@Override
public void processMessage(Chat chat, Message message) {
msg = message.getBody();
System.out.println("Received message: "
+ (message != null ? message.getBody() : "NULL"));
GeneratNotification(msg);
}
});
}
};
connection.getChatManager().addChatListener(chatmangerlistnr);
// idle for 20 seconds
/* final long start = System.nanoTime();
while ((System.nanoTime() - start) / 1000000 < 20000) // do for 20 seconds
{
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
*/
System.out.println("is cancellable "+this.isCancelled());
return msg;
}
protected void onPostExecute(String r) {
// GeneratNotification(r);
}
}
Я в замешательстве, если метод isCancellable()
- это false
, то как я могу его остановить? или как я могу удалить прослушиватель чата?
пожалуйста, эксперт, помогите мне.