[問題] 結束Thread的方法 (在Android平台上)
在做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)
推
12/31 00:38, , 1F
12/31 00:38, 1F
→
12/31 00:44, , 2F
12/31 00:44, 2F
→
12/31 15:19, , 3F
12/31 15:19, 3F
→
01/27 09:34, , 4F
01/27 09:34, 4F