[問題] Thread+Handler 回傳字串

看板AndroidDev作者 (overture1928)時間13年前 (2012/12/29 04:01), 編輯推噓1(1016)
留言17則, 5人參與, 最新討論串1/1
各位大大好 小弟有個問題想請教大家 今天在研究 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

12/29 04:51, , 1F
因為Thread會平行處理,結果會先return再送message
12/29 04:51, 1F

12/29 04:52, , 2F
不過最好是去搞懂UIThread的概念還有Handler的部份
12/29 04:52, 2F

12/29 13:08, , 3F
謝謝 cooper 大解惑 不過我還有個問題想指教
12/29 13:08, 3F

12/29 13:08, , 4F
因為在 handler 不能直接return 我想要的字串
12/29 13:08, 4F

12/29 13:09, , 5F
我才會設定一個 String 去接 最後再return給我
12/29 13:09, 5F

12/29 13:10, , 6F
是不是有方法可以等 handler處理完 return理想結果呢
12/29 13:10, 6F

12/29 16:17, , 7F
建議改用AsyncTask比較簡單..比Handler更適合你的需求
12/29 16:17, 7F

12/29 16:18, , 8F
還有你的Thread也寫不對..request要寫在Thread中才是
12/29 16:18, 8F

12/29 16:18, , 9F
還有你說的等完才回傳..那就失去開thread的目的了
12/29 16:18, 9F

12/29 17:16, , 10F
謝謝 pop 大的建議! 我會去找 AsyncTask的文章來研究
12/29 17:16, 10F

12/29 17:17, , 11F
剛剛誤打誤撞 在 thread.start(); 後面補上 thread.join();
12/29 17:17, 11F

12/29 17:18, , 12F
return 第一次就傳回我要的值了@@ 可是還是有點迷惑
12/29 17:18, 12F

12/29 17:20, , 13F
這樣就不需要 handler 來幫我檢查 thread結束了沒
12/29 17:20, 13F

12/29 17:22, , 14F
還是謝謝兩位大大的熱心@@ 小弟會繼續研習的 感恩
12/29 17:22, 14F

12/30 12:35, , 15F
推AsyncTask,好用
12/30 12:35, 15F

01/05 15:43, , 16F
請用AsyncTask;或是更簡單一點用Loader API
01/05 15:43, 16F

01/05 15:44, , 17F
個人認為Loader切得更漂亮:)
01/05 15:44, 17F
文章代碼(AID): #1GtVghDn (AndroidDev)