我正在使用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连接。
有人面临这个问题吗?任何解决方案?
答案 0 :(得分:16)
@BNK request.setShouldCache(false);
为我工作。这是凌空缓存管理的问题。
我认为,当发送请求时:
它会首先点击缓存并将其发送到onResponse
然后当结果来自远程服务器时,它会将其提供给onResponse
如果使用volley中实现的任何默认Request类(例如StringRequest,JsonRequest等),则在将请求对象添加到齐射setShouldCache(false)
之前调用RequestQueue
request.setShouldCache(false);
myQueue.add(request);
您还可以为缓存设置到期策略。