我正在使用凌空从Web服务获取一些数据。我正在使用以下格式来阅读凌空的回复。
我发出凌空请求,调用下面定义的方法,并在凌空请求发生时显示progressDialog
。
public static void GetDetails(String tag, Handler handler,
String Token,String TID){
String url = "http://myWebserviceMethod"
JsonArrayRequest jsArrRequest = new JsonArrayRequest(url,
ResponseListener.<JSONArray> createGenericReqSuccessListener(
handler, Constant.MessageState.SUCCESS),
ResponseListener.createErrorListener(handler,
Constant.MessageState.FAILED));
jsArrRequest.setShouldCache(false);
jsArrRequest.setRetryPolicy(new DefaultRetryPolicy(2 * 1000, 3, 1.0f));
MyGlobalClass.getInstance().addToRequestQueue(jsArrRequest);
}
我有一个通用的响应监听器,它会返回一个常量和下面的响应
public class ResponseListener<T> {
public static <T> Response.Listener<T> createGenericReqSuccessListener(
final Handler handler, final int messageId) {
return new Response.Listener<T>() {
@Override
public void onResponse(T response) {
Message msg = new Message();
msg.arg1 = messageId;
msg.obj = response;
handler.sendMessage(msg);
}
};
}
public static Response.ErrorListener createErrorListener(
final Handler handler, final int messageId) {
return new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Message msg = new Message();
msg.arg1 = messageId;
msg.obj = error;
error.printStackTrace();
handler.sendMessage(msg);
}
};
}
我正在使用Handlers
以下列方式阅读/解析活动中的回复
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.arg1) {
case Constant.MessageState.SUCCESS: // Constant declared in a public class
parseSaveResponse((JSONArray) msg.obj);
break;
case Constant.MessageState.FAILED: // Constant declared in a public class
progressDialog.dismiss();
ShowError((VolleyError) msg.obj);
break;
}
它工作正常,但有时候消息永远不会转到handler
,并且没有一个案例得到满足,让我progressDialog
无休止地加载。
这背后的原因是什么?
期待这方面的一些线索。 :)
感谢。
答案 0 :(得分:0)
我在同一个帖子中一起调用了Google地图和一个排球服务。
像下面这样调用Web服务并且它可以工作。
map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
//volley web service request.
}
});