smack client で xmpp を使ってチャットアプリを開発しました。着信メッセージ通知にバックグラウンド スレッドを使用し、正常に動作しました。しかし、チャットビューにいるときは、着信メッセージの通知は必要ありません。そのため、chatmangerlistener を削除しました。しかし、それは機能していません。
2 つ目の方法を使用して、チャット ビューに入ったときにバックグラウンド スレッドを閉じるようにしました。しかし、バックグラウンド スレッドが閉じたり停止したりしていないことがわかりました。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
それを止めることができますか? または、チャットリスナーを削除するにはどうすればよいですか?
専門家が私を助けてください。