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

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

Links booklink

Contact Us: admin [ a t ] ucptt.com