Android客户端缓存机制(文字缓存和多媒体文件缓存)
概述:
客户端缓存机制是Android应用开发中非常重要的一项工作,使用缓存机制不仅仅可以为用户节省3G流量,同时在用户体验方面也是非常好的选择.
缓存机制分为两部分,一部分是文字缓存,另一部分是多媒体文件缓存.
缓存文件保存策略:
1.文字缓存:
文字缓存应该分为两种,一种是更新比较频繁的区域,一种是更新不频繁的区域.
根据两者的更新频率区分它们的过期时间.
更新比较频繁的区域,它的缓存过期时间应该为应用程序内(即应用程序从打开到关闭的这段时间).这种情况会有专门的缓存文件夹存放该类缓存文件,以及专门的缓存数据库表存放信息.每次应用程序启动的时候都会先将该类数据清空.
另一种很少更新的区域,它的缓存不设置过期时间,而是提供一个按钮或者Menu可以让用户选择手动更新(如我的好友列表,我的订阅,我的分享.等等….)
具体的文字缓存划分,详见附录1.
(1)通常情况下,我们与服务器交互都是采用JSON格式获取数据的,获取的JSON数据仅仅是一段字符串,我们可以考虑将这些字符串使用文件流写入一个TXT,保存到
SD卡中,在数据库添加该数据的记录.添加数据库记录时,提供两个关键字段,一个是
请求的URL,另一个则是本地保存后的文件地址.日后每次向服务器发起请求之前都会根据URL在数据库中检索.
该方法好处:降低系统数据库数据量,不会出现数据库满了的现象.
缺点:IO操作频繁,有时代码书写有误会造成内存泄露等状况.
(2)将JSON数据解析后装入List<Map>对象中,然后遍历List,将数据统统写入相应的数据库表结构中,以后每次向服务器发起请求之前可以先在数据库中检索,如果有直接返回.
该方法好处:如果本地存在文字缓存,那么读取缓存速度快.
缺点:增加数据库数据量.
2.多媒体文件缓存
(1)图片缓存
图片的缓存可以根据当前日期,时间为名字缓存到SD卡中的指定图片缓存目录,
同时数据库中做相应记录,记录办法可以采用两个关键字段控制,一个字段是该图片的URL地址,另一个字段是该图片的本机地址.取图片时根据URL在数据中检索,如果没有则连接服务器下载,下载之后再服务器中作出相应记录.
(2)视频文件缓存
考虑到视频文件就是动画片,每一集的大小应该超过20MB,如果边播放边下载的话
用户的3G流量负担是很大的,而且用户看完一集动画片,基本上不会再去看第二遍.
从这个状况来看,建议不要对视频文件进行下载缓存.另外也能降低程序员的编码负担.
当然我们可以为一些动漫发烧友提供一个下载动画片的按钮,供他们下载喜欢的动画片,甚至也可以设置如果要下载动画片会付出一些代价等等.
缓存文件删除策略:
1. 每一个模块在每次客户端自动或者用户手动更新的时候删除相应模块的缓存文件,并重新下载新的缓存文件.
2. 在设置界面中提供删除缓存的功能,点击后删除本机所有缓存.
本地客户端与服务器交互流程图如下:
附录1 (需要缓存的模块)
临时缓存:
模块:新品->产品列表
模块:新品->评论列表
模块:新品->详情
模块:专题->本期
模块:专题->精彩内容
模块:漫画->产品列表
模块:漫画->评论列表
模块:漫画->详情
模块:动画->产品列表
模块:动画->评论列表
模块:动画->详情
模块:游戏->产品列表
模块:游戏->评论列表
模块:游戏->详情
模块:写真->产品列表
模块:写真->评论列表
模块:写真->详情
长期缓存:
模块:专题->往期推荐
模块:我的好友
模块:个人
Android客户端缓存机制(文字缓存和多媒体文件缓存)相关推荐
- Android 显示刷新机制、VSYNC和三重缓存机制
Android 显示刷新机制.VSYNC和三重缓存机制 为了理解 APP 是如何进行渲染的,我们就必须了解手机硬件是如何工作的,也必须理解什么是 VSYNC. 首先,我们需要了解2个相关概念: 刷新率 ...
- mysql的缓存机制是什么意思_MySQL缓存机制详解
众所周知,缓存的设置是所有现代计算机系统发挥高性能的重要因素之一.对于MySQL数据库来说,也是得益于MySQL缓存机制,才能够提高MySQL数据库的性能,减少数据的内存占比. MySQL缓存机制简单 ...
- html5 客户端数据缓存机制,深入理解HTML5离线缓存机制
TML5提供了一种离线应用缓存机制,使得网页应用可以离线使用,这种机制在移动端浏览器上支持度非常广,所有版本的android和ios浏览器都能很好的支持.我们可以放心的使用该特性来加速移动端页面的访问 ...
- http缓存机制详解之--强缓存
在具体了解 HTTP 缓存之前先来明确几个术语: 缓存命中率:从缓存中得到数据的请求数与所有请求数的比率.理想状态是越高越好. 过期内容:超过设置的有效时间,被标记为"陈旧"的内容 ...
- HTTP缓存机制及原理(强制缓存/协商缓存)
可以参考文章:https://www.imooc.com/article/267319#comment 主要感觉里面的图很好. 强制缓存(Expires/Cache-Control): 协商缓存: 1 ...
- android webView的缓存机制和资源预加载
android 原生使用WebView嵌入H5页面 Hybrid开发 一.性能问题 android webview 里H5加载速度慢 网络流量大 1.H5页面加载速度慢 渲染速度慢 js解析效率 js ...
- android listview 缓存,探究Android ListView 的缓存机制
概述 ListView 是继承AbListView,AbListView是所有列表类控件的基类. ListView的数据加载 在ListView数据加载中最关键的一个函数就是makeAndAddVie ...
- 干货 | 彻底弄懂 HTTP 缓存机制及原理
转载自 干货 | 彻底弄懂 HTTP 缓存机制及原理 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为 ...
- 彻底弄懂HTTP缓存机制及原理
转载:https://www.cnblogs.com/chenqf/p/6386163.html 彻底弄懂HTTP缓存机制及原理 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 W ...
最新文章
- 红外线可程序化?遥控器Motedem控制自家居住环境
- fragment error
- 跟Kafka学技术系列之时间轮
- 随机密码php,PHP会生成随机密码
- java 仅有类名 构造类_java – 这个设计模式有名字吗? (具有仅调用构造函数的实现的基类)...
- 7收不到邮件 contact form_如何解决Contact Form 7提示的配置错误
- P3244-[HNOI2015]落忆枫音【dp】
- Docker 系列学习文章 | 什么是容器云?
- html左滑效果图,前端福利——左滑右滑,绝对是你见过的最简单的写法 - 你猜猜看...
- Intel® Performance Counter Monitor - A Better Way to Measure CPU Utilization
- IDC:今年全球认知和人工智能系统支出将突破125亿美元
- 打算为IBatisNet 引入自定义Membership和Role
- c++的极乐净土的实现
- 在Excel如何根据内容自动调整行高列宽
- 使用代理ip会导致网络卡顿吗?
- 洛谷P2440 木材加工
- GAS超标,以太坊告急
- win10使用VMware Workstations安装CentOS
- 群聊比单聊,为什么复杂这么多?
- 关于基线长度对双天线GNSS测姿精度的影响