Pal*_*aja 3 android google-maps driving-directions
在我的应用程序中,我使用JSONwebservice从中获取数据Google Navigation api.我用下面的代码.我得到以下异常
android.os.NetworkOnMainThreadException.
如何使用AsyncTask?这是我的代码.谢谢.public class MainActivity扩展MapActivity {
MapView mapView ;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("*************1**************1");
setContentView(R.layout.activity_main);
System.out.println("*************2**************");
mapView = (MapView) findViewById(R.id.mapv);
System.out.println("*************3**************");
Route route = directions(new GeoPoint((int)(26.2*1E6),(int)(50.6*1E6)), new GeoPoint((int)(26.3*1E6),(int)(50.7*1E6)));
RouteOverlay routeOverlay = new RouteOverlay(route, Color.BLUE);
mapView.getOverlays().add(routeOverlay);
mapView.invalidate();
System.out.println("*************4**************");
}
@SuppressLint("ParserError")
private Route directions(final GeoPoint start, final GeoPoint dest) {
//https://developers.google.com/maps/documentation/directions/#JSON <- get api
String jsonURL = "http://maps.googleapis.com/maps/api/directions/json?";
final StringBuffer sBuf = new StringBuffer(jsonURL);
sBuf.append("origin=");
sBuf.append(start.getLatitudeE6()/1E6);
sBuf.append(',');
sBuf.append(start.getLongitudeE6()/1E6);
sBuf.append("&destination=");
sBuf.append(dest.getLatitudeE6()/1E6);
sBuf.append(',');
sBuf.append(dest.getLongitudeE6()/1E6);
sBuf.append("&sensor=true&mode=driving");
Parser parser = new GoogleParser(sBuf.toString());
Route r = parser.parse();
System.out.println("********r in thread*****" +r);
return r;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
Run Code Online (Sandbox Code Playgroud)
}
@imran khan使用另一个线程的想法是正确的.从HoneyComb及以上版本,您无法在UI线程内部执行任何网络操作.UI线程是负责显示视图和接收触摸事件的线程,它必须是免费的,不会被长时间运行的操作阻止.(否则你在Android上有一个ANR).
但是,对于网络请求等长时间运行的操作,使用AsyncTask实际上并不是一个好主意.AsyncTask javadoc甚至声称它们是为短期运行操作设计的......
最好的方法是使用服务.我鼓励您从RoboSpice库中读取此信息图并使用RoboSpice,它将简化使用网络创建服务的过程,并使您可以更轻松地使用Spring Android解析您的json内容.

| 归档时间: |
|
| 查看次数: |
4214 次 |
| 最近记录: |