私のアプリケーションにはいくつかのアクティビティがあり、最初のアクティビティでは、他のアクティビティでサーバーと通信するためにソケットを接続します。このソケットはワーカースレッドで実行されます。
私の質問は、アプリケーションが終了したときにこのソケットをどこで閉じることができるかということです。たとえば、[戻る]ボタンを使用して...
最後のアクティビティのソケットを閉じると思いましたonDestroy()
が、このアクティビティは実行時にシステムによって破棄され、アプリケーションが終了していなくてもソケットを閉じることができます。これは欲しくない。
run()
ソケット接続を処理するスレッドの私の方法は次のようになります。
public void run() {
if (this.bliveclient.isConnected()){
try {
//...
while (running) {
//waiting for input data and do something...
}
}
catch (IOException ex) {
//handle exception
}
finally{
try {
mySocket.close();
} catch (IOException ex) {
//handle exception
}
}
}
ただし、finally
ブロックが呼び出されることはありません。
誰かが私にいくつかのヒントを与えることができますか?