私は、サーバーとの接続を維持するためのスレッドを持っています。ユーザーがアプリケーションからサービスにサインアウトしても(アプリケーションを終了しない場合)、スレッドを終了して本当になくなっていることを確認する方法が必要です。サーバーの接続は長いポーリング(a.k.a、Cometアーキテクチャ)を介して行われます。スレッドを終了するために「割り込み」を使用すると、サーバーへの基本接続は引き続き行われます。スレッドは常にメモリに残ります。ソケットを強制的に閉じる方法はありません。Android:ソケット接続でスレッドを終了する
ログアウトした直後にユーザーが再度サインインすると、サーバーに新しい接続が確立されます。ただし、ソケットが解放されていないため、古い接続はまだアクティブです。 Androidの[設定]> [アプリケーション]> [アプリケーションの管理]に移動してアプリケーションを終了して再起動すると、接続スレッドは実際に終了しています。
ログアウトした後にスレッドを終了させる方法はありますか?本当に強制終了させる必要がありますか? System.GC()を使用しても役に立ちません。
申し訳ありませんが、私はHttpClientを使用していることを指摘しませんでしたので、ソケットに直接アクセスすることはできません。私はhttpClient.getConnectionManager()。shutdown()を使ってみたが、それは役に立たなかった。 – AndroidDev
あなたの問題に関連するコードを投稿できますか?このスレッドをどうやって閉じようとしていますか? – Jack