→ asadman1523:最近也有遇到,似乎邏輯設定要好,thread讓他自動結束 03/05 18:42
是類似這樣嗎?
宣告 static boolean threadOn = false;
if( not threadOn){
threadOn = true
thread run
}
thread running is end => threadOn = false;
→ qweqweqweqwe:你如何確定原本的thread還在跑呢? 又如果可以確定thr 03/05 18:44
QQ 我是自己猜的 應該是thread沒錯
→ qweqweqweqwe:ead還在跑 那應該有機會砍掉吧QQ 03/05 18:45
推 motors55:在thread裡設flag,destroy時把flag值改掉? 03/05 18:51
這樣的話 thread runnable 裡面不就要很多地方設 flag?
不然手機還是要做一些白工 最後沒有update ListView的資料而已?
→ NewSpec:這個scenario是android開發最機巴毛的地方之一阿... 03/05 20:32
推 sdyy:用asynctask 去管理會不會比較好 可搭配cancel 03/05 22:43
冏 好像不錯! 明天試試
謝謝大大們的指教!
※ 編輯: issuemylove 來自: 118.165.190.102 (03/06 00:26)
推 changyuheng:可以用 handler 吃 runnable 03/06 07:33
→ issuemylove:?? 樓上的意思我不太懂QQ 03/06 11:40
→ qweqweqweqwe:應該是用handler post的意思 03/06 19:35
推 samsonjr:Thread有interrupt(),try keep reference and control it 03/08 00:23
→ samsonjr:或者丟到Thread pool對pool做關閉也行 03/08 00:24
→ issuemylove:可是thread interrupt是要有一些狀態下才能interrupt 03/08 11:05
→ issuemylove:不是嗎? (wait, sleep, join) 可是我的thread 03/08 11:05
→ issuemylove:只是單純做網路下載,並沒有用到 wait, sleep, join 03/08 11:06
→ issuemylove:等 function 03/08 11:06
推 ChonPiggy:看到樓上的想起最近也在煩惱類似的事情... 03/09 02:44
→ ChonPiggy:例如類似 .accept() 的 blocking code 怎麼 interrupt 03/09 02:45
推 MetalChao:其實只要有 blocking 的動作, 最終(在API內部)還是會呼 03/09 13:56
→ MetalChao:叫到 wait或sleep, 只是會以不同的 exception 表示 03/09 13:57
→ MetalChao:API內部會去抓InterruptedException然後轉成別的 03/09 13:58
→ MetalChao:例如socket的accept/read, 被 interrupt 時也會發出 03/09 13:59
→ MetalChao:InterruptedIOException (不是 InterruptedException) 03/09 13:59
→ MetalChao:如果想要定時離開 blocking 做別的事, 可以setSoTimeout 03/09 14:00
→ MetalChao:就不會完全被 block 住 03/09 14:00
→ MetalChao:另外如果你的code真的沒有呼任何blocking的API, 也可以 03/09 14:01
→ MetalChao:自己去檢查 Thread.currentThread.isInterrupted()來知 03/09 14:02
→ MetalChao:道thread是否有被 interrupt() 03/09 14:02
→ issuemylove:最後我採用了邏輯設定的辦法QQ||| 感覺很笨 03/14 17:10
→ issuemylove:但我想了很久還是不知道thread怎麼關 哈哈orz 03/14 17:10