作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 Google 的 Volley 库作为我获取网络数据的设计;
我已经设置了一个请求队列
requestQueue = new RequestQueue(new DiskBasedCache(new File(context.getCacheDir(),
DEFAULT_CACHE_DIR)), new BasicNetwork(new
HttpClientStack(AndroidHttpClient.newInstance(userAgent))));
我还对 Request 进行了子类化,并且可以很好地从网络返回数据。我的问题是缓存:在 parseNetworkResponse() 中,当我调用时,它在我的 Request 子类中被覆盖
return Response.success(list, HttpHeaderParser.parseCacheHeaders(response));
HttpHeaderParser.parseCacheHeaders(response) 返回 null,因为服务器在其响应 header 中设置为“无缓存”...无论如何,我仍然希望将此数据缓存可变设置的小时数(可能是 24 小时) , 我如何通过创建一个 volley Cache.Entry 来做到这一点...据我所知,URL 被用作缓存键值(我希望它是 URL)。
综上所述,由于 HttpHeaderParser.parseCacheHeaders(response) 返回 null,我想创建一个新的 Cache.Entry,它设置为 24 小时后过期,缓存键是请求的 URL。
有什么想法吗?
谢谢!
最佳答案
我遇到了同样的问题并最终得到了这个解决方案:
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
// Create a FakeCache that invalidate the data after 24 hour
Cache.Entry mFakeCache = HttpHeaderParser.parseCacheHeaders(response);
mFakeCache.etag = null;
mFakeCache.softTtl = System.currentTimeMillis() + 86400 * 1000;
mFakeCache.ttl = mFakeCache.softTtl;
return Response.success(response.data, mFakeCache);
}
关于android - 截击 : How to set up a Cache. 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18191366/
我是一名优秀的程序员,十分优秀!