作者mio86 (米欧掰溜)
看板java
标题[问题] 结束Thread的方法
时间Wed Dec 30 16:15:56 2009
在做Android上作开发 类似做一个收送封包的程式
再收封包的地方 开了一个thread来执行
但是 想要 利用按下按钮之後 结束连线
但是都会当掉
class tRecv extends Thread
{
// isStart 用来让while回圈启动或停止
private boolean isStart = true;
public void setIsStart(boolean is)
{
isStart = is;
}
public void run()
{
String line = "";
try{
while (isStart) {
// test123.Recv() 是写一个副函式来执行read的动作
line = test123.Recv();
}
}catch(Exception e){
System.out.print("Whoops! Recv didn't work!\n");
}
}
}
而我启动的是利用宣告
final tRecv cThread = new tRecv();
且在一个button按下之後
cThread.setIsStart(true);
cThread.start();
并且按下另一个button
// set tRecv 中的isStart变数为 false
cThread.setIsStart(false);
// test123.ReceiverUnreg 是执行关闭连线的动作
test123.ReceiverUnreg(default_appname, default_psid);
还麻烦大家帮帮忙 这个问题已经卡了好多天了
也在网路上找了不少方法 但是仍然会整个程式卡住 >_____<
自己的猜测 可能是下面其中问题
1. isStart并未被改成false 所以thread无法停止
2. thread卡在 socket listen封包
但是应该会听一个 timeout时间吧???
skt_rec = new Socket(server_ip_address, server_port_no);
in_rec = new BufferedReader(new InputStreamReader(skt_rec.getInputStream()));
while (!in_rec.ready()) {}
while(in_rec.readLine() != null)
{
InputData = in_rec.readLine().substring(22);
}
拜托大家了Q__________Q
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.96.109.220
※ 编辑: mio86 来自: 140.96.109.220 (12/30 16:31)
※ 编辑: mio86 来自: 140.96.109.220 (12/30 16:37)
1F:推 reon:Android 不同Thread传送资料要靠Message..不能直接传 12/31 00:38
2F:→ reon:你的View和Button也是一个Thread.. 注意一下Thread问题 12/31 00:44
3F:→ reon:你不能直接丢参数给Thread..要透过Message 所以要写个Handler 12/31 15:19
4F:→ mio86:谢谢! 我已经解决了^^ 01/27 09:34