【发布时间】:2014-01-12 15:09:50
【问题描述】:
我从用户那里得到一个地址,我正在使用GeoCoder 来获取纬度/经度。
获得 lat/lng 后,我需要向我的服务器发送一个 POST 请求以保存数据(使用 Volley)。
我在 AsyncTask 中运行 GeoCoder 请求,并在 onPostExecute 回调中运行 post 请求。
这是正确的方法还是有更好的方法?
这是我的代码:
private class GeoCoderAsync extends AsyncTask<String, Void, List<Address>>{
@Override
protected List<Address> doInBackground(String... params) {
String address = params[0];
List<Address> addresses = null;
Geocoder coder = new Geocoder(Favorites.this);
try {
addresses = coder.getFromLocationName(address, 1);
} catch (IOException e) {
e.printStackTrace();
}
return addresses;
}
@Override
protected void onPostExecute(List<Address> result) {
Utils.dismissDialog(progDialog);
if (result != null) {
Address address = result.get(0);
...
//this makes a post request
VolleyHelper.post(request,AppConstants.URL.FAVORITES, getFavoritesSuccess(), getFavoritesError(), progDialog);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else{
Log.d(TAG, "Got Nothing!!!");
}
}
}
【问题讨论】:
-
这段代码中连续的2个http请求在哪里?我只看到一个!
-
@Lefteris -
VolleyHelper.post(request,AppConstants.URL.FAVORITES, getFavoritesSuccess(), getFavoritesError(), progDialog); -
这是我看到的请求。第二个在哪里?
-
@Lefteris -
GeoCoder.getFromLocationName()实际上是在发出一个 http 请求 -
好吧,您正在 postExecute 上运行 Volley 请求,这意味着第一个请求已经完成。所以据我所见,没有错
标签: android android-asynctask android-volley