Retrofit + Okhttp是否使用httpCaching作为Android的默认设置?

 胡子壮熊_623 发布于 2023-01-29 11:40

我用改造和okhttp在我们的应用程序之一.

我无法找到Retrofit默认行为的好解释.

如果Okhttp在类路径上,它将自动使用.但据我所知,默认的HttpResponseCache为null.

我是否需要使用Retrofit和Okhttp显式启用缓存?

3 个回答
  • OkHttpClient v2的正确实现:

    int cacheSize = 10 * 1024 * 1024; // 10 MiB
    File cacheDir = new File(context.getCacheDir(), "HttpCache");
    Cache cache = new Cache(cacheDir, cacheSize);
    OkHttpClient client = new OkHttpClient.Builder()
        .cache(cache)
        .build();
    

    看文档

    2023-01-29 11:43 回答
  • 您应该手动创建OkHttpClient并根据需要进行配置.在这种情况下,您应该安装缓存.一旦你有了创建一个OkClient并将其传递给Retrofit的RestAdapter.Builder

    此外,没有HTTP POST请求的缓存.但是,GET将被缓存.

    2023-01-29 11:43 回答
  • 已弃用OkHttpClient v2.0.0及更高版本

    正如杰西威尔逊指出你需要创建自己的缓存.
    以下代码应创建10MB缓存.

    File httpCacheDirectory = new File(application.getApplicationContext()
        .getCacheDir().getAbsolutePath(), "HttpCache");
    
    HttpResponseCache httpResponseCache = null;
    try {
       httpResponseCache = new HttpResponseCache(httpCacheDirectory, 10 * 1024);
    } catch (IOException e) {
       Log.e(getClass().getSimpleName(), "Could not create http cache", e);
    }
    
    OkHttpClient okHttpClient = new OkHttpClient();
    okHttpClient.setResponseCache(httpResponseCache);
    builder.setClient(new OkClient(okHttpClient));
    

    该代码基于Github上的Jesse Wilsons示例.

    2023-01-29 11:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有