我是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