我的应用程序有一些活动,其中在第一个活动中我连接一个套接字以与其他活动上的服务器通信。这个套接字在工作线程中运行。
我的问题是:当应用程序结束时,我在哪里可以关闭此套接字?例如使用后退按钮...
我曾想在最后一个活动的 onDestroy() 中关闭套接字,但是该活动在运行时可能会被系统销毁,即使应用程序未完成也会关闭套接字。我不希望出现这种情况。
我处理套接字连接的线程的 run() 方法如下:
我的问题是:当应用程序结束时,我在哪里可以关闭此套接字?例如使用后退按钮...
我曾想在最后一个活动的 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
块从未被调用。
有人能给我一些提示吗?
running
,否则线程会被杀死。处理多个活动所需的网络处理似乎是将其转移到服务中的好地方。 - zapl