作者laiair (overture1928)
看板AndroidDev
标题[问题] Thread+Handler 回传字串
时间Sat Dec 29 04:01:44 2012
各位大大好
小弟有个问题想请教大家
今天在研究 4.0 之後的网路问题
得知需要开一个 Thread 来解决不能在主线程
跑一些比较耗时的动作
=
小弟参考了网路的文章
写了一个 button 的 click 动作
然後呼叫自定义的 funtion plzHelpMe()
回传一个 String 给我
收到这个 String 再用 Toast 显示在画面上
=
https://gist.github.com/4401250
连结的是程式码
=
因为我有故意关掉网路测试
我疑惑的是
我按下 button 这个动作
第一次回传 "HI null" (不理想结果)
第二次才回传 "HI 网路连线有问题" (理想结果)
为什麽第一次会回传空值
而没有等 handler 处理完呢
麻烦大大指教了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.244.55.146
1F:→ cooper6334:因为Thread会平行处理,结果会先return再送message 12/29 04:51
2F:→ cooper6334:不过最好是去搞懂UIThread的概念还有Handler的部份 12/29 04:52
3F:→ laiair:谢谢 cooper 大解惑 不过我还有个问题想指教 12/29 13:08
4F:→ laiair:因为在 handler 不能直接return 我想要的字串 12/29 13:08
5F:→ laiair:我才会设定一个 String 去接 最後再return给我 12/29 13:09
6F:→ laiair:是不是有方法可以等 handler处理完 return理想结果呢 12/29 13:10
7F:→ popcorny:建议改用AsyncTask比较简单..比Handler更适合你的需求 12/29 16:17
8F:→ popcorny:还有你的Thread也写不对..request要写在Thread中才是 12/29 16:18
9F:→ popcorny:还有你说的等完才回传..那就失去开thread的目的了 12/29 16:18
10F:→ laiair:谢谢 pop 大的建议! 我会去找 AsyncTask的文章来研究 12/29 17:16
11F:→ laiair:刚刚误打误撞 在 thread.start(); 後面补上 thread.join(); 12/29 17:17
12F:→ laiair:return 第一次就传回我要的值了@@ 可是还是有点迷惑 12/29 17:18
13F:→ laiair:这样就不需要 handler 来帮我检查 thread结束了没 12/29 17:20
14F:→ laiair:还是谢谢两位大大的热心@@ 小弟会继续研习的 感恩 12/29 17:22
15F:推 master11360:推AsyncTask,好用 12/30 12:35
16F:→ tomap41017:请用AsyncTask;或是更简单一点用Loader API 01/05 15:43
17F:→ tomap41017:个人认为Loader切得更漂亮:) 01/05 15:44