看板 AndroidDev 關於我們 聯絡資訊
各位大大好 小弟有個問題想請教大家 今天在研究 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
cooper6334:因為Thread會平行處理,結果會先return再送message 12/29 04:51
cooper6334:不過最好是去搞懂UIThread的概念還有Handler的部份 12/29 04:52
laiair:謝謝 cooper 大解惑 不過我還有個問題想指教 12/29 13:08
laiair:因為在 handler 不能直接return 我想要的字串 12/29 13:08
laiair:我才會設定一個 String 去接 最後再return給我 12/29 13:09
laiair:是不是有方法可以等 handler處理完 return理想結果呢 12/29 13:10
popcorny:建議改用AsyncTask比較簡單..比Handler更適合你的需求 12/29 16:17
popcorny:還有你的Thread也寫不對..request要寫在Thread中才是 12/29 16:18
popcorny:還有你說的等完才回傳..那就失去開thread的目的了 12/29 16:18
laiair:謝謝 pop 大的建議! 我會去找 AsyncTask的文章來研究 12/29 17:16
laiair:剛剛誤打誤撞 在 thread.start(); 後面補上 thread.join(); 12/29 17:17
laiair:return 第一次就傳回我要的值了@@ 可是還是有點迷惑 12/29 17:18
laiair:這樣就不需要 handler 來幫我檢查 thread結束了沒 12/29 17:20
laiair:還是謝謝兩位大大的熱心@@ 小弟會繼續研習的 感恩 12/29 17:22
master11360:推AsyncTask,好用 12/30 12:35
tomap41017:請用AsyncTask;或是更簡單一點用Loader API 01/05 15:43
tomap41017:個人認為Loader切得更漂亮:) 01/05 15:44