1
をスレッドセーフされていないことを確認してください、私はスマックAPIにソースコードを読んでいると、メソッドXMPPConnection#切断は次のようになります。私は保存しています、私のシナリオではこのXMPPコードが
public void disconnect(Presence unavailablePresence) {
// If not connected, ignore this request.
if (packetReader == null || packetWriter == null) {
return;
}
shutdown(unavailablePresence);
if (roster != null) {
roster.cleanup();
roster = null;
}
wasAuthenticated = false;
packetWriter.cleanup();
packetWriter = null;
packetReader.cleanup();
packetReader = null;
}
セッションと呼ばれるクラス内のライブXMPPConnection 個別の実行スレッドは、セッション#shutdown()を呼び出して、XMPPConnectionのインスタンスを閉じることを試みます。私が見ているように、私はmutexなどを取得してXMPPConnectionを閉じるためにSessionに協力して伝える必要があります。正しい?
バグを指摘してくれてありがとう。私はそれを呼び出す前に外部と同期することは避けられません。平和。 –