java - 使用改造 2 缓存数据
问题描述
我也在尝试使用改造以离线模式访问我的数据,但它没有发生。
代码没有问题,但它不起作用。
两种 WiFi 状态的日志数据相同。
OkHttpClient client = new OkHttpClient
.Builder()
.addInterceptor(logging)
.addInterceptor(new Interceptor() {
@Override public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (isNetworkAvailable(context,ConnectivityManager.TYPE_WIFI)) {
request = request.newBuilder().header("Cache-Control", "public, max-age=" + 60).build();
Log.d("data",request.toString());
} else {
request = request.newBuilder().header("Cache-Control", "public, only-if-cached, max-stale=" + 60 * 60 * 24 * 7).build();
Log.d("data1",request.toString());
}
return chain.proceed(request);
}
})
.cache(new Cache(httpCacheDirectory, 10 * 1024 * 1024)) // 10 MB
.build();
解决方案
这应该适合你。
OkHttpClient okHttpClient = new OkHttpClient()
.newBuilder()
.cache(new Cache(getyourapplicationcontext.getCacheDir(), 10 * 1024 *1024))
.addInterceptor(chain -> {
Request request = chain.request();
if (NetworkUtil.isDeviceConnectedToInternet(getyourapplicationcontext)) {
request = request.newBuilder().header("Cache-Control", "public, max-age=" + 60).build();
} else {
request = request.newBuilder().header("Cache-Control", "public, only-if-cached, max-stale=" + 60 * 60 * 24 * 7).build();
}
return chain.proceed(request);
})
.build();``
推荐阅读
- java - 使用 InetSocketAddress 创建 DatagramPacket,缺少构造函数
- javascript - 单页 Vue 应用程序仅在 https 上的 aws s3 上加载空白
- svn - 从命令行列出 SVN 的项目/分支/主干
- javascript - MySQL 在 Windows 上给了我“未知列”错误
- javascript - 使用顶部 div 和底部 div 背景创建一个渐变,将它们连接到中间 div
- vba - 如何将收件箱中的电子邮件保存到本地驱动器为 .msg 文件?
- php - 即使使用索引,Laravel orWhere 查询也非常慢
- java - springboot依赖类可以自动装配服务模块吗?
- google-apps-script - Google Sheet Script - 将每个选项卡保存到特定文件夹中的单独文件中
- ruby-on-rails - 使用 MiniMagick::Image 创建图像获取不正确的图像标题