Android HttpResponseCache,我可以使用缓存数据吗?

时间:2014-04-24 09:04:54

标签: android caching httpresponse

我在网上搜索了这个,但无法找到答案。

我使用HttpResponeCache来缓存来自我的http请求的响应。 但我希望我的应用程序,如果没有可用的互联网且文件仍然存在,则使用该缓存。

缓存:

private void enableHttpResponseCache(File cacheDir) {
    try {
        long httpCacheSize = 10 * 1024 * 1024; // 10 MiB 
        File httpCacheDir = new File(cacheDir, "http");
        Class.forName("android.net.http.HttpResponseCache")
                .getMethod("install", File.class, long.class)
                .invoke(null, httpCacheDir, httpCacheSize);
    } catch (Exception httpResponseCacheNotAvailable) {
    }
}

我查看了该函数创建的文件,有3个文件:

  • e8b34557a3241feb7e186d1b86c9af4c.0
  • e8b34557a3241feb7e186d1b86c9af4c.1
  • 轴颈

文件e8b34557a3241feb7e186d1b86c9af4c.1确实包含我的JSON数据。

那么有没有办法获取和使用这些数据?

1 个答案:

答案 0 :(得分:0)

查看HTTPResponseCache的{​​{3}}。您可以强制缓存响应!

//....
try {
     connection.addRequestProperty("Cache-Control", "only-if-cached");
     InputStream cached = connection.getInputStream();
     // the resource was cached! show it
  catch (FileNotFoundException e) {
     // the resource was not cached 
 }