[問題]AsyncTask與GoogleMap使用上的問題

看板AndroidDev作者 (asss)時間9年前 (2016/08/01 01:22), 編輯推噓7(7012)
留言19則, 6人參與, 最新討論串1/1
小弟最近剛學寫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

08/01 01:34, , 1F
不是可以傳參數進去嗎
08/01 01:34, 1F

08/01 04:17, , 2F
你的了解是錯的,Java沒有全域變數,區域變數才是不能動的
08/01 04:17, 2F

08/01 04:25, , 3F
AsyncTask的重點在它是async,你的問題比較可能出在沒弄清
08/01 04:25, 3F

08/01 04:26, , 4F
楚執行順序,在task跑完前就去拿資料
08/01 04:26, 4F

08/01 08:58, , 5F
所以只需要等執行序跑完再去拿值就ok??
08/01 08:58, 5F

08/01 09:08, , 6F
要怎麼知道asynctask已經執行完呢
08/01 09:08, 6F

08/01 09:41, , 7F
onPreExecute(執行前)->onProgressUpdate(執行中顯示ui
08/01 09:41, 7F

08/01 09:42, , 8F
) and doInBackground(背景作業)->onPostExecute(執行
08/01 09:42, 8F

08/01 09:42, , 9F
完)
08/01 09:42, 9F

08/01 09:47, , 10F
Google搜尋AsyncResponse 把取得的值回傳就好了
08/01 09:47, 10F

08/01 16:24, , 11F
不好意思在請問一下 我現在已經可以用樓上大大的方法拿到
08/01 16:24, 11F

08/01 16:27, , 12F
我是用這篇網站的方法 ppt.cc/vfj1v
08/01 16:27, 12F

08/01 16:29, , 13F
結果寫完發現 還是不知道在onMapReady上使用這些值
08/01 16:29, 13F

08/01 16:33, , 14F
或者是有沒有方法可以判斷說AsyacTask已經跑完?
08/01 16:33, 14F

08/01 17:11, , 15F
08/01 17:11, 15F

08/01 17:29, , 16F
你流程應該做成這樣 http://i.imgur.com/WP4eiKp.jpg
08/01 17:29, 16F

08/01 18:06, , 17F
可以了 謝謝!!
08/01 18:06, 17F

08/04 01:44, , 18F
用asynctask 要小心旋轉的問題,旋轉還要更新ui的話,
08/04 01:44, 18F

08/04 01:44, , 19F
要特別處理
08/04 01:44, 19F
文章代碼(AID): #1NdZF2we (AndroidDev)