7

我正在使用Volley JsonObjectRequest从服务器获取数据。

代码片段:

JsonObjectRequest jsObjRequest = new JsonObjectRequest
        (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

    @Override
    public void onResponse(JSONObject response) {
        System.out.println("Response: " + response.toString());
    }
}, new Response.ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError error) {
        // TODO Auto-generated method stub

    }
});

但我JSONObject response每次在移动数据连接上都一样。

注意:它在 WiFi 连接上完美运行。

有人面临这个问题吗?任何解决方案?

4

1 回答 1

21

@BNKrequest.setShouldCache(false);为我工作。这是凌空缓存管理的问题。

我假设,当发送请求时:

  • 它会首先命中缓存并将其发送到onResponse

  • 然后当结果来自远程服务器时,它将提供给onResponse

如果您使用任何在 volley 中实现的默认请求类(例如 StringRequest、JsonRequest 等),则setShouldCache(false)在将请求对象添加到 volley 之前立即调用RequestQueue

request.setShouldCache(false);
myQueue.add(request);

您还可以为缓存设置过期策略

有关更多详细信息,请参阅此答案

于 2015-10-01T05:19:02.730 回答