作者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