我是Android新手,我正在制作一个来自纬度和经度的应用程序获取地址。但问题是Volley的响应,在Response.Listener中获取响应需要很长时间。 代码如下:
private void obtenerDireccionFromLatLng(final double lat,final double lng) {
tm.log("BEGIN_VOLLEY");
RequestQueue queue = Volley.newRequestQueue(MapsFijarPosicion.this);
String url = String.format(Locale.ENGLISH, "http://maps.googleapis.com/maps/api/geocode/json?latlng=%1$f,%2$f&sensor=true&language="
+ Locale.getDefault().getCountry(), lat, lng);
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, createMyReqSuccessListener(),
createMyReqErrorListener());
queue.add(stringRequest);
tm.log("END_VOLLEY");
}
并且Response.Listener在这里:
private Response.Listener<String> createMyReqSuccessListener() {
return new Response.Listener<String>() {
@Override
public void onResponse(String response) {
tm.log("BEGIN_PARSING");
List<Address> retList=new ArrayList<Address>();
try {
JSONObject jsonObject=new JSONObject(response);
if("OK".equalsIgnoreCase(jsonObject.getString("status"))){
JSONArray results=jsonObject.getJSONArray("results");
for(int i=0;i<results.length();i++){
JSONObject result = results.getJSONObject(i);
String indiStr = result.getString("formatted_address");
Address addr = new Address(Locale.getDefault());
addr.setAddressLine(0, indiStr);
retList.add(addr);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
mUbicacion=retList.get(0).getAddressLine(0);
progressBar.setVisibility(View.GONE);
btnGuardarPosicion.setEnabled(true);
tm.log("END_PARSING");
}
};
}
跟踪输出:
http://subefotos.com/ver/?5a667e29104374bfbebda184d81dd19ao.png
排球日志输出:
http://subefotos.com/ver/?387ed0867bd266fa734f43a7706f7761o.png
先谢谢。