看板 AndroidDev 關於我們 聯絡資訊
我有寫一個是要在計算Android上圖片的Hash程式,在背景上執行。但是還要把計算好的H ash透過Socket傳送給Server做判斷在傳回結果,過程有點多。這樣導致了有數筆資料時 會產生ANR的問題。 我用Handler運行一個Runnable,Runnable裡面負責計算一筆以上的FileHash並且傳送給Se rver,這邊還是會有ANR的問題。 所以我想問問大家 能不能在Runnable上每次在產生一個新的Thread來進行運算然後關閉 ?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.241.97.10
wanilly:how abour AsyncTask class? 11/24 20:00
windverb:對吼 還可以用AsyncTask... 11/24 21:18
Killercat:你該不會直接用View.getHandler().post(runnable)吧? 11/25 21:53
Killercat:View.getHandler() post上去的會block ui thread(當然 11/25 21:55
gpc:你在mainthread裡面弄網路嗎? 11/26 11:58
Killercat:mainthread弄網路現在會被擋下來 另外我總覺得有些人 11/29 06:47
Killercat:(不是指原PO)有種奇怪的觀念,只要套個runnable就是 11/29 06:47
Killercat:multi-thread? 其實handler.post跟multi-thread沒關係啊 11/29 06:47
Killercat:這奇怪的觀念到底哪來的冏 11/29 06:48
windverb:我在thread上執行也會產生強制關閉不是在mainthread 11/29 07:54
windverb:我是想說用handler呼叫runnable,runnable在呼叫runnable. 11/29 10:48
Killercat:runnable只是個程式片段的定義 getHandler通常來說 11/30 00:38
Killercat:拿取的會是UI thread, 你在runnerable裡面跑一個 11/30 00:38
Killercat:runnable其實就是拿出ui thread要他跑一組code而已 11/30 00:39
Killercat:他比較接近Lambda或者Block(如果你寫過ios)的概念 11/30 00:55
Killercat:或者,很抽象的說,也很類似函數指標 11/30 00:56