Volley RequestQueue:在noConnectionError之后重试

时间:2015-02-17 15:30:18

标签: java android android-volley

我尝试实现一个简单的异步http请求,将一些数据推送到服务器并使用响应。 但有时智能手机正在退出网络访问,而StringRequest因noConnectionError而停止。请求似乎已完成,重试规则不适用(无论是否添加自己的重试,都不会重试)。

StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://myurl/test.php",
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                // Do something with the response
                Toast.makeText(context, response, Toast.LENGTH_SHORT).show();
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // Handle error
                Toast.makeText(context, error.toString(), Toast.LENGTH_SHORT).show();
            }
        }) {
    @Override
    protected Map<String, String> getParams() {
        return params;
    }

    @Override
    protected VolleyError parseNetworkError(VolleyError volleyError) {
        Log.d("DEBUG", "parseNetworkError");
        return super.parseNetworkError(volleyError);
    }

    @Override
    public void deliverError(final VolleyError error) {
        Log.d("DEBUG", "deliverError");
    }
};
stringRequest.setRetryPolicy(new MyRetryPolicy(20 * 1000, 5, 1.0f));

MyRetryPolicy:

@Override
public void retry(VolleyError error) throws VolleyError {
    Log.d("DEBUG", ""+error);
    // This is never getting called on NoConnectionError
}

日志记录告诉我“parseNetworkError”,然后告诉我“deliverError”。

但我不知道如何告诉他将请求保留在队列中,直到网络恢复并且请求可以通过服务器传递。

是否有人知道如何让它等待积极的回应并重新尝试直到得到它?

或者有没有比volley requestqueue更好的方法来创建asynchrounus http请求队列?

0 个答案:

没有答案