【发布时间】:2012-04-04 22:06:04
【问题描述】:
我的应用程序有一些活动,在第一个活动中,我连接了一个套接字以在其他活动上与服务器通信。此套接字在工作线程中运行。
我的问题是:应用程序完成后我在哪里可以关闭这个套接字?例如使用 BACK 按钮...
我想关闭最后一个活动的onDestroy() 中的套接字,但是这个活动可以在运行时被系统销毁并关闭套接字,即使应用程序没有完成。我不想要这个。
我的run()处理socket连接的线程方法是这样的:
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,TCP 连接工作正常。我可以正常接收和发送数据......我唯一的问题是关闭套接字,因为服务器也需要关闭这个套接字。