cho*_*paz 7 android android-volley
我正在使用Google的Volley Library作为获取网络数据的设计;
我已经设置了RequestQueue
requestQueue = new RequestQueue(new DiskBasedCache(new File(context.getCacheDir(),
DEFAULT_CACHE_DIR)), new BasicNetwork(new
HttpClientStack(AndroidHttpClient.newInstance(userAgent))));
Run Code Online (Sandbox Code Playgroud)
我还有子类请求,并且从网络返回数据就好了.我的问题是缓存:在parseNetworkResponse()中,在我的子类Request中被覆盖,当我调用时
return Response.success(list, HttpHeaderParser.parseCacheHeaders(response));
Run Code Online (Sandbox Code Playgroud)
HttpHeaderParser.parseCacheHeaders(response)返回null,因为服务器在其响应头中设置为"no caching"...无论如何我仍然希望将这些数据缓存一个变量设置的小时数(可能是24小时),怎么能我这样做是通过创建一个齐射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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3533 次 |
| 最近记录: |