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