小さな XMPP クライアント/ボットを構築するために smack を使用すると、非常に奇妙な動作が発生します。接続と、ConnectionListener および ChatManagerListener をセットアップしました。これは非常にうまく機能し、ポータブル デバイスで実行されているアプリケーションとチャットできます。
接続が失われたときの動作をテストするために、ポータブル デバイスのイーサネット ケーブルを抜きました。XMPP クライアントが接続を失い、ユーザーがユーザー仲間の名簿で「オフライン」に設定されることを期待していました。何が起こるかというと、このユーザーはまだ「オンライン」として表示されており、クライアントの ConnectionListener は、connectionClosed や reconnectionFailed などに関係なく、何も起動しません。
その後、イーサネット ケーブルを再び差し込むと、接続が常に有効になっているように見えることがあります。オフライン メッセージが処理され、以前のようにチャットできるようになりました。また、クライアントが完全にアクセスできず、故障していて、すべてのリスナーがなくなったように見えることもあります... しかし、例外はスローされません。
接続が中止された後にクライアントが再び起動するかどうかわからないため、これは非常に奇妙で制御不能な動作であり、クライアント全体が使用できなくなります。
他の誰かがそのような問題を経験したことがありますか、または何が起こっているか (何が起こっていないか) のヒントを持っていますか?
必要に応じてコードを提供できますが、実際には Smack のドキュメントからコピー & ペーストするだけです。