当前位置: 代码迷 >> Android >> 请教怎么停止socket通信进程
  详细解决方案

请教怎么停止socket通信进程

热度:33   发布时间:2016-04-28 06:31:15.0
请问如何停止socket通信进程?
本帖最后由 u011808175 于 2014-03-01 20:44:15 编辑
class GetThread implements Runnable
    {
     boolean end;
     GetThread()
     {
     super();
     end=false;
     }
    
@Override
public void run() 
{
socket = the_app.socket;
while(!end)
{
if(end)
break;
try 
{
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String ans = in.readLine();
if(ans != null)
{
Message msg = new Message();
msg.obj = ans;
AskInputActivity.this.handler.sendMessage(msg);
}

catch (IOException e) {
Message msg = new Message();
msg.obj = "net error";
AskInputActivity.this.handler.sendMessage(msg);
break;
}
catch (NullPointerException e)
{
Message msg = new Message();
msg.obj = "net error";
AskInputActivity.this.handler.sendMessage(msg);
break;
}

}
}

public void stop()
{
end = true;
}
    
    }


我想在Activity结束的时候,在onDestroy方法里结束掉这个进程,但是由于里面的in.readline()是阻塞方法,我没办法通过调用stop()结束它…… 请问还有什么方法可以结束掉进程吗?谢谢~~
------解决方案--------------------
阻塞的也没关系,当程序调用了onDestroy 时,设置一个标志位 hasStop= true;

String ans = in.readLine();
if (hasStop) {

}
------解决方案--------------------
String ans = in.readLine();//这个地方应该会有超时异常
if (hasStop) {
  //程序直接break;
  break;
}
Thread t = new Thread(runnable);
t.stop();//执行这个方法,打断线程。
------解决方案--------------------
socket.close.
另外一个。你建立线程的对象的。close也可以。
  相关解决方案