Okhttp----缓存的加入方式----附完整demo
Okhttp是由Sqare公司开发的开源网络访问库,目前在Android和Java开发中有着广泛的应用。在Android开发中和Retrofit结合可以非常方便地调用网络接口。
使用缓存可以让我们的app不用长时间地显示令人厌烦的加载圈,提高了用户体验,而且还节省了流量,在数据更新不是很频繁的地方使用缓存就非常有必要了。想要加入缓存不需要我们自己来实现,Okhttp已经内置了缓存,默认是不使用的,如果想使用缓存我们需要手动设置。
服务器支持缓存
1 2 3 |
public Cache provideCache() { return new Cache(mContext.getCacheDir(), 10240*1024); } |
创建了这个缓存后我们还需要将其设置到okttpClient对象里面:
1 2 3 4 5 6 |
OkHttpClient okHttpClient = new OkHttpClient(); OkHttpClient newClient = okHttpClient.newBuilder() .cache(cache) .connectTimeout(20, TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .build(); |
服务器不支持缓存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class CacheInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); Response response = chain.proceed(request); Response response1 = response.newBuilder() .removeHeader("Pragma") .removeHeader("Cache-Control") //cache for 30 days .header("Cache-Control", "max-age=" + 3600 * 24 * 30) .build(); return response1; } } |
然后将该Intercepter作为一个NetworkInterceptor加入到okhttpClient中:
1 2 3 4 5 6 7 8 |
OkHttpClient okHttpClient = new OkHttpClient(); OkHttpClient newClient = okHttpClient.newBuilder() .addNetworkInterceptor(new CacheInterceptor()) .cache(cache) .connectTimeout(20, TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .build(); |
A simple Android app shows Hearthstone cards with okhttp, retrofit, dagger2 and Meterail Design
地址:https://github.com/Chaoba/HearthstoneCards
Okhttp----缓存的加入方式----附完整demo相关推荐
- Android 拖动条(SeekBar)实例 附完整demo项目代码
Android 拖动条(SeekBar)实例 附完整demo项目代码 1.拖动条的事件 实现SeekBar.OnSeekBarChangeListener接口.需要监听三个事件: 数值改变(onPro ...
- java ajax实现分页代码,jQuery实现分页功能(含ajax请求、后台数据、附完整demo)...
需求分析 1)需要首页,末页功能 2)有点击查看上一页,下一页功能 3)页码到当前可视页码最后一页刷新页面 实现思路 也是分为三部分处理 1)点击首页,末页直接显示第一页或者最后一页内容,当前页面为第 ...
- 【Android】蓝牙开发——BLE(低功耗蓝牙)(附完整Demo)
目录 目录 前言 一.相关概念介绍 二.实战开发 三.项目演示 四.Demo案例源码地址 五.更新记录 1.2020/12/29 :修改 setupService()中错误 2.2021/05/14 ...
- Flask实现登录功能【附完整Demo】
网站少不了要和数据库打交道,归根到底都是一些增删改查操作,这里做一个简单的用户登录功能来学习一下Flask如何操作MySQL. 用到的一些知识点:Flask-SQLAlchemy.Flask-Logi ...
- Windows PC和安卓Socket通信,附完整Demo。
前言:由于要实现将安卓相机的预览数据在PC上处理,所以想到的就是通过socket方式进行通信,PC端采用c#实现.实际测试发现要想高速传输还是有难度,即使用千兆网,目前效果还是不理想.每帧1.5MB的 ...
- Android三级图片缓存框架思路【附练习Demo】
缓存的简介 现在android应用中不可避免的要使用图片,有些图片是可以变化的,需要每次启动时从网络拉取,这种场景在有广告位的应用以及纯图片应用(比如百度美拍)中比较多. 现在有一个问 ...
- Python+Twisted+Autobahn实现Websocket(附完整demo)
在游戏行业游戏客户端和服务端需要大量的,快速的通讯,这里面就会用到websocket . Autobahn 是一个高性能的websocket 它采用了两种实现方案 . 1 基于Twisted 2 基于 ...
- android自动更新demo,Android程序自动更新功能模块的实现方法【附完整demo源码下载】...
本文实例讲述了Android程序自动更新功能模块的实现方法.分享给大家供大家参考,具体如下: 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程序启动的时候首先调用更 ...
- Axure导入元件库的两种方式-附完整元件库
Axure导入原件库有两个方式: 一.通过工具导入 在Axure面板中的库点击如下所示的图标,然后选择载入元件库 二.复制元件库到软件安装目录下的DefaultSettings\Libraries下 ...
最新文章
- 使用 OpenCV 和 Tesseract 对图像中的感兴趣区域 (ROI) 进行 OCR
- 贝壳一站式大数据开发平台实践
- 神策数据入选“2021CCFA 零售行业技术新锐企业榜单”
- linux管理Windows文件,Linux与Windows互传文件,用户组管理和用户管理
- glup打包代码不更新
- Java常见bean mapper的性能及原理分析
- idea 调试远程tomcat
- SpringCloud Config详解
- Class.forName()方法抛出异常
- 安装CentOS7虚拟机
- 关于字符 字节 python3
- C语言制作小游戏——贪吃蛇
- 记事本编码html乱码,记事本乱码怎么办【解决方法】
- 01-2制作U盘启动盘--装机助理工具
- MySQL数据库主从双向同步
- MAC和IP地址伪造发包
- win7计算机excel快捷键,excel快捷键大全 公式
- Leetcode 1324. Print Words Vertically
- 玩安卓从 0 到 1 之列表一键置顶
- 用户可以通过软件对计算机,用户可以通过 软件对计算机软、硬件资源进行管理。...
热门文章
- python爬取小说章节信息用pygame进行数据显示_爬虫不过如此(python的Re 、Requests、BeautifulSoup 详细篇)...
- 使用了未经检查或不安全的操作_上溪镇开展压痕机使用企业安全生产专项检查...
- 微型计算机中的外存储器 现在普遍采用,2010澳门特别行政区全国计算机等级考试二级笔试试卷VB最新考试试题库(完整版)...
- 新手学电脑入门教程_炒股技巧大全丨炒股新手怎样才能长期稳定盈利
- C++知识点48——类继承与类的作用域
- 学生计算机教室管理规章制度,学校规章制度之小学信息技术教室管理制度
- 11年瑞纳手动挡值多少钱_三分钟让你知道手中的松石值多少钱
- gcc编译c文件_Linux下C语言程序的编译过程
- hive创建mysql表,hiveMysql创建、修改、删除字段/表
- mysql 新增更新_MySQL新增数据,存在就更新,不存在就添加(转帖加实测)