当前位置: 首页 > 知识库问答 >
问题:

Android系统中是否默认使用httpCaching对Okhttp进行改造?

咸皓
2023-03-14

我在我们的一个应用程序中使用改造和okhttp。

对于Retrofit的默认行为,我真的找不到一个好的解释。

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

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

共有3个答案

公良浩邈
2023-03-14

您应该手动创建OkHttpClient并按照自己喜欢的方式进行配置。在这种情况下,您应该安装缓存。一旦你有了这个,创建一个OkClient,并将其传递给Retrofit的RestAdapter.Builder。

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

彭兴朝
2023-03-14

不推荐用于OkHttpClient v2.0.0及更高版本

正如Jesse Wilson指出的那样,您需要创建自己的缓存。
以下代码应该创建一个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));

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

谭锐藻
2023-03-14

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();

参见文档

 类似资料:
  • 从API16开始,Jellybean Roboto作为可用的字体家族被引入。看看Android16的“新”在这里。 在上指定(API 16+中的Roboto)是的默认吗? 是 ? 来自材料设计排版网站: “Roboto和Noto是Android和Chrome上的标准字体。” null

  • 我在OkHttp和Cookies管理方面遇到问题。 我正在使用一个定制的OkHttpClient和一个CookieManager创建一个改装客户端。 然后,我有一个身份验证请求,如果我的登录良好,它会回答我一个身份验证cookie: 像这样使用它: 在这个请求的响应头中,我有这样一个: 设置Cookie:auth=someauthkey468tyyuy;路径=/;域=。我的网站。com 在请求之后

  • 本文向大家介绍Android中默认系统的声音/大小修改和配置详解,包括了Android中默认系统的声音/大小修改和配置详解的使用技巧和注意事项,需要的朋友参考一下 前言 声音管理系统用来实现声音的输入和输出、声音的控制和路由等功能,包括主和各种音源的音量调节、声音焦点控制,声音外设的检测和状态管理,声音源输入和输出的策略管理、音效的播放、音轨设置和播放、录音设置和启动等功能。 最近在做定制需求的时

  • 默认情况下,Spring Boot使用从客户端默认接受值为“/login”的。 如果我想创建一个自定义身份验证系统,包括以下选项: 登录endpoint,如:/api/v1/auth/ign,将接受电子邮件和密码 而不是像YT中的许多视频所示那样创建CustomAuthFilter,而是在auth控制器中创建一个处理发送回jwt令牌的方法。 现在我已经知道,要更改默认登录路由,我需要: 但是下一部

  • 这篇文档解释默认配置下Django认证系统的使用。这些配置已经逐步可以满足大部分常见项目对的需要,可以处理范围非常广泛的任务,且具有一套细致的密码和权限实现。对于需要与默认配置不同需求的项目,Django支持扩展和自定义认证。 Django的认证同时提供认证和授权,并通常统一称为认证系统,因为这些功能某些地方是耦合的。 User对象 User对象是认证系统的核心。它们通常表示与你的站点进行交互的用

  • 你好,我想更改默认activity。但当我这样做的时候,应用程序启动时不会出现任何错误 这样Mainactivy就可以毫无问题地启动了。当我按下按钮时,它也会转到设备activity。所以一切正常。现在我需要DevcieACtivty成为默认的一个。 我就这样改变舱单 但现在应用程序没有上线。没有错误。控制台中没有任何内容。只是什么都做不到,会有什么问题吗? 开始写入以下错误ActivityMan