看板 AndroidDev 關於我們 聯絡資訊
小弟最近剛學寫App,所以蠻多觀念都不懂得 據我了解AsyncTask主要動作是在doInBackground()方法執行 然後在 onPostExecuted() 上可以更改UI,但沒辦法動到全域變數。 現在利用Mysql資料庫的地址然後用GoogleMap將地址一一標記出來 現在已經成功把所有地址轉成經緯度(是使用Json解析的方式)所以有用到AsyncTask 我一開始的想法是在onPostExecuted()裡面把經緯度存至全域變數的String陣列裡面 再用GoogleMap.addMarker一一將標記點加上去,不過當然是失敗了。 所以想請問一下 不知道有沒有比較好的方法可以解決?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.35.187 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1469985730.A.EA8.html
ckvir: 不是可以傳參數進去嗎 08/01 01:34
ssccg: 你的了解是錯的,Java沒有全域變數,區域變數才是不能動的 08/01 04:17
ssccg: AsyncTask的重點在它是async,你的問題比較可能出在沒弄清 08/01 04:25
ssccg: 楚執行順序,在task跑完前就去拿資料 08/01 04:26
spider8320: 所以只需要等執行序跑完再去拿值就ok?? 08/01 08:58
spider8320: 要怎麼知道asynctask已經執行完呢 08/01 09:08
terryyamg: onPreExecute(執行前)->onProgressUpdate(執行中顯示ui 08/01 09:41
terryyamg: ) and doInBackground(背景作業)->onPostExecute(執行 08/01 09:42
terryyamg: 完) 08/01 09:42
terryyamg: Google搜尋AsyncResponse 把取得的值回傳就好了 08/01 09:47
uu8320: 不好意思在請問一下 我現在已經可以用樓上大大的方法拿到 08/01 16:24
uu8320: 我是用這篇網站的方法 ppt.cc/vfj1v 08/01 16:27
uu8320: 結果寫完發現 還是不知道在onMapReady上使用這些值 08/01 16:29
uu8320: 或者是有沒有方法可以判斷說AsyacTask已經跑完? 08/01 16:33
terryyamg: http://i.imgur.com/YeTQikA.jpg 大概像這樣 08/01 17:11
terryyamg: 你流程應該做成這樣 http://i.imgur.com/WP4eiKp.jpg 08/01 17:29
uu8320: 可以了 謝謝!! 08/01 18:06
benedict76: 用asynctask 要小心旋轉的問題,旋轉還要更新ui的話, 08/04 01:44
benedict76: 要特別處理 08/04 01:44