我是Java新手,因爲這個問題屬於我的工作非常時間敏感的項目,我沒有時間學習有關AsyncTasks的一切。 所以我的問題是:如何正確創建一個AsyncTask
我該如何從以下代碼構造一個AsyncTask
?
目標是在地圖上繪製路線。我填寫了ArrayList
兩個Geopoints
(開始位置和路線的目的地)。 roadManager
應該將這些路標發送給將路由發回給我的服務器。
buildRoadOverlay
是最終在地圖上繪製路線的方法。
RoadManager roadManager = new OSRMRoadManager(this);
ArrayList<GeoPoint> waypoints = new ArrayList<GeoPoint>();
GeoPoint myLocation = new GeoPoint(51.488978, 6.746994);
waypoints.add(Location);
waypoints.add(myLocation);
Road road = roadManager.getRoad(waypoints);
我想這已在onPostExecute
-method去,右?:
Polyline roadOverlay = RoadManager.buildRoadOverlay(road);
map.getOverlays().add(roadOverlay);
從上部代碼的可變location
從一個不同的方法,從我打算開始異步起源任務。這意味着,我需要在調用它時將該變量傳輸給AsyncTask,我也不確定如何完成。
這是可變location
的初始化:)
GeoPoint Location = new GeoPoint(Double.parseDouble(place.getLongitude()),
Double.parseDouble(place.getLatitude()));
的AsyncTask由onPreExecute(),doInBackground()的, onProgressUpdate和onPostExecute()。你會在這裏顯示進度條。您將在doInBackground(params ...)中設置/打開您的連接,您將在其中執行需要很長時間的後臺任務。您可以在此處調用publishProgress(),它將在onProgressUpdate()步驟中發佈,必須在這裏返回一個值。在onProgressUpdate()階段,您將顯示更新。在最後一個階段,在ui線程上調用onPostExecute(您的結果),完成後您將從後臺任務中獲得結果。 – HaroldSer
我正在使用osmdroid(OpenStreetMaps) – Glave
這是無關緊要的,你可以使用任何AsyncTask,下載,應用圖像過濾器... – IgniteCoders