[問題] 結束Thread的方法 (在Android平台上)

看板java作者 (米歐掰溜)時間16年前 (2009/12/30 16:15), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
在做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
Android 不同Thread傳送資料要靠Message..不能直接傳
12/31 00:38, 1F

12/31 00:44, , 2F
你的View和Button也是一個Thread.. 注意一下Thread問題
12/31 00:44, 2F

12/31 15:19, , 3F
你不能直接丟參數給Thread..要透過Message 所以要寫個Handler
12/31 15:19, 3F

01/27 09:34, , 4F
謝謝! 我已經解決了^^
01/27 09:34, 4F
文章代碼(AID): #1BEmm_4H (java)