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也可以。