繁体   English   中英

排球JSON缓存问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM