[英]Volley json cache issue
我正在使用Volley进行请求,并且需要缓存我的json值。 我阅读了此链接,我做到了,但有一个问题。
我有一个listView哪个项目是item1和item2。 当我单击item1时,它将缓存json;当我单击item2时,它将从缓存返回。 结果是它仅显示item1值。 我应该在这里更改什么,这样缓存才是正确的。
public static Cache.Entry parseIgnoreCacheHeaders(NetworkResponse response) {
long now = System.currentTimeMillis();
Map<String, String> headers = response.headers;
long serverDate = 0;
String serverEtag = null;
String headerValue;
headerValue = headers.get("Date");
if (headerValue != null) {
serverDate = parseDateAsEpoch(headerValue);
}
serverEtag = headers.get("ETag");
final long cacheHitButRefreshed = 3 * 60 * 1000; // in 3 minutes cache will be hit, but also refreshed on background
final long cacheExpired = 24 * 60 * 60 * 1000; // in 24 hours this cache entry expires completely
final long softExpire = now + cacheHitButRefreshed;
final long ttl = now + cacheExpired;
Cache.Entry entry = new Cache.Entry();
entry.data = response.data;
entry.etag = serverEtag;
entry.softTtl = softExpire;
entry.ttl = ttl;
entry.serverDate = serverDate;
entry.responseHeaders = headers;
return entry;
}
使用VolleyExtended进行缓存非常有用:eu.the4thfloor.volleyextended更新了响应侦听器,您在其中获得了其他布尔值更改,这意味着响应是否不同于缓存中的上一个响应。 在错误响应上,还有其他参数响应(缓存),可以在服务器或网络中断的情况下使用。 当然,如果仅将其缓存。 当然,缓存取决于服务器发送的max-age参数。 但是您可以根据需要在齐射中进行更新
private class ResponseListenerYYY extends Api.ResponseListener {
@Override
public void onResponse(String response, boolean changed) {
}
@Override
public void onErrorResponse(VolleyError error, String response) {
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.