0
我正在用Asynctask更新地图。现在我想用Handler做同样的事情。我环顾四周,但无法理解我应该做什么。 AsyncTask有点慢,我希望它有点快。如何通过处理程序更新地图?
下面是我在做什么在的AsyncTask:
class DrawRouteTask extends AsyncTask<GeoPoint, Void, Polyline> {
private Exception exception;
private Polyline roadOverLay;
@Override
protected void onPostExecute(Polyline polyline) {
super.onPostExecute(polyline);
Log.i("AsyncTAsk ", " in post execute " + roadOverLay);
roadOverlay = roadOverLay;
// mOsmv.invalidate();
mOsmv.getOverlays().add(roadOverLay);
mOsmv.invalidate();
}
@Override
protected Polyline doInBackground(GeoPoint... geoPoints) {
try {
Log.i("AsyncTask", "Start Point >> " + geoPoints[0]);
Log.i("AsyncTask", "End Point >> " + geoPoints[1]);
RoadManager roadManager = new OSRMRoadManager(getContext());
ArrayList<GeoPoint> waypoints = new ArrayList<>();
waypoints.add(geoPoints[0]);
waypoints.add(geoPoints[1]);
Marker marker = new Marker(mOsmv);
marker.setPosition(geoPoints[0]);
marker.setPosition(geoPoints[1]);
marker.setTitle("Your Location ");
Log.i("AsyncTask ", "Drawable >> "+ ContextCompat.getDrawable(getContext(), R.drawable.pin));
marker.setIcon(ContextCompat.getDrawable(getContext(), R.drawable.pin));
mOsmv.getOverlays().add(marker);
road = roadManager.getRoad(waypoints);
roadOverLay = RoadManager.buildRoadOverlay(road);
roadOverLay.setColor(Color.RED);
return roadOverLay;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
任何帮助,将不胜感激。
消息究竟代表什么? – KingintheNorth
消息就像是用于在活动之间传递数据的intent中的一个包。它可以从线程获取数据(int what,Object obj),并将其发送给处理程序,该处理程序将在主线程中运行。 – March3April4
在你的情况下,roadOverLay应该是msg.obj。然后处理程序可以使用它来更新地图。 – March3April4