Android 如何使截击缓存在1分钟内过期

Android 如何使截击缓存在1分钟内过期,android,android-volley,Android,Android Volley,我的截击缓存有问题。是否有任何方法可以在一分钟后删除缓存并请求新数据 我的代码 JsonObjectRequest jsObjRequest = new JsonObjectRequest         (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {     @Override     public void onResponse(JSONObject response) {  

我的截击缓存有问题。是否有任何方法可以在一分钟后删除缓存并请求新数据

我的代码

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

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

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

    }
});
JsonObjectRequest jsObjRequest=新的JsonObjectRequest
(Request.Method.GET,url,null,new Response.Listener()){
@覆盖
公共void onResponse(JSONObject响应){
mTxtDisplay.setText(“响应:+Response.toString());
    }
},new Response.ErrorListener(){
@覆盖
公共无效onErrorResponse(截击错误){
//TODO自动生成的方法存根
    }
});
您可以执行以下操作:

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

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

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

    }
}){
 @Override
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
        Response<JSONObject> resp = super.parseNetworkResponse(response);
        if(!resp.isSuccess()) {
            return resp;
        }
        long now = System.currentTimeMillis();
        Cache.Entry entry = resp.cacheEntry;
        if(entry == null) {
            entry = new Cache.Entry();
            entry.data = response.data;
            entry.responseHeaders = response.headers;
        }
        entry.ttl = now + 60 * 1000;  //keeps cache for 1 min

        return Response.success(resp.result, entry);
    }
};
JsonObjectRequest jsObjRequest=新的JsonObjectRequest
(Request.Method.GET,url,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
mTxtDisplay.setText(“响应:+Response.toString());
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//TODO自动生成的方法存根
}
}){
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
Response resp=super.parseNetworkResponse(响应);
如果(!resp.issucess()){
返回响应;
}
long now=System.currentTimeMillis();
Cache.Entry=resp.cacheEntry;
if(条目==null){
entry=new Cache.entry();
entry.data=response.data;
entry.responseHeaders=response.headers;
}
entry.ttl=now+60*1000;//保持缓存1分钟
返回响应。成功(响应结果、条目);
}
};

这将使您始终只缓存请求1分钟

截取缓存有什么问题?它缓存项目的时间太长,以至于拒绝获取新项目。您是否收到错误消息?我之所以这样问,是因为这可能是应该解决的问题。可能的重复我不想使url的缓存无效,但会使特定请求的缓存无效。您好,我正在使用volley将列表设置为我的recyclerview,并在启用缓存时为LoadMoreItems()设置分页,onLoadMore items用于在现有列表的末尾追加已加载的项,我通过使用Global.getInstance().shared().getRequestQueue().getCache().remove(url)修复了此问题;但是,当我重新启动应用程序时,它会崩溃,因为adapter list.size返回null,在删除缓存后,如何重新请求?请help@KaustubhBhagwat你解决问题了吗。我也面临同样的问题。