I am using volley to get some data from a web service. I'm using the following format to read responses from volley.
I make volley requests calling methods which are defined like below and I show a progressDialog
when the volley request happens.
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);
}
I have a generic response listener which will return me a constant and the response like below
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);
}
};
}
and I'm reading/parsing the responses in the activity using Handlers
in the following way
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((JSONObject) msg.obj);
break;
case Constant.MessageState.FAILED: // Constant declared in a public class
progressDialog.dismiss();
ShowError((VolleyError) msg.obj);
break;
}
It works fine but some times the message never goes to the handler
and none of the cases are satisfied, leaving me with the progressDialog
endlessly loading.
What could be the reason behind this?
Looking forward for some leads on this. :)
Thanks.
0 comments:
Post a Comment