无法读取凌空回复的回复

时间:2015-03-18 14:35:56

标签: android android-volley android-handler

我正在使用凌空从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无休止地加载。

这背后的原因是什么?

期待这方面的一些线索。 :)

感谢。

1 个答案:

答案 0 :(得分:0)

我在同一个帖子中一起调用了Google地图和一个排球服务。

像下面这样调用Web服务并且它可以工作。

map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
        @Override
        public void onMapLoaded() {
            //volley web service request.
        }
});