我通过 smack 客户端使用 xmpp 开发了聊天应用程序。我使用后台线程来接收消息通知并且工作正常。但是现在当我在聊天视图中时,我不想收到传入消息的通知。所以我删除了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
那么我该如何阻止它?或者我怎样才能删除我的聊天监听器?
请专家帮助我。