概述:

客户端缓存机制是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客户端缓存机制(文字缓存和多媒体文件缓存)相关推荐

  1. Android 显示刷新机制、VSYNC和三重缓存机制

    Android 显示刷新机制.VSYNC和三重缓存机制 为了理解 APP 是如何进行渲染的,我们就必须了解手机硬件是如何工作的,也必须理解什么是 VSYNC. 首先,我们需要了解2个相关概念: 刷新率 ...

  2. mysql的缓存机制是什么意思_MySQL缓存机制详解

    众所周知,缓存的设置是所有现代计算机系统发挥高性能的重要因素之一.对于MySQL数据库来说,也是得益于MySQL缓存机制,才能够提高MySQL数据库的性能,减少数据的内存占比. MySQL缓存机制简单 ...

  3. html5 客户端数据缓存机制,深入理解HTML5离线缓存机制

    TML5提供了一种离线应用缓存机制,使得网页应用可以离线使用,这种机制在移动端浏览器上支持度非常广,所有版本的android和ios浏览器都能很好的支持.我们可以放心的使用该特性来加速移动端页面的访问 ...

  4. http缓存机制详解之--强缓存

    在具体了解 HTTP 缓存之前先来明确几个术语: 缓存命中率:从缓存中得到数据的请求数与所有请求数的比率.理想状态是越高越好. 过期内容:超过设置的有效时间,被标记为"陈旧"的内容 ...

  5. HTTP缓存机制及原理(强制缓存/协商缓存)

    可以参考文章:https://www.imooc.com/article/267319#comment 主要感觉里面的图很好. 强制缓存(Expires/Cache-Control): 协商缓存: 1 ...

  6. android webView的缓存机制和资源预加载

    android 原生使用WebView嵌入H5页面 Hybrid开发 一.性能问题 android webview 里H5加载速度慢 网络流量大 1.H5页面加载速度慢 渲染速度慢 js解析效率 js ...

  7. android listview 缓存,探究Android ListView 的缓存机制

    概述 ListView 是继承AbListView,AbListView是所有列表类控件的基类. ListView的数据加载 在ListView数据加载中最关键的一个函数就是makeAndAddVie ...

  8. 干货 | 彻底弄懂 HTTP 缓存机制及原理

    转载自  干货 | 彻底弄懂 HTTP 缓存机制及原理 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为 ...

  9. 彻底弄懂HTTP缓存机制及原理

    转载:https://www.cnblogs.com/chenqf/p/6386163.html 彻底弄懂HTTP缓存机制及原理 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 W ...

最新文章

  1. 将Project的内容导出成单独的XPO文件
  2. .NET框架设计—常被忽视的框架设计技巧
  3. webpack打包处理js文件中的高级语法
  4. IIS7 Request format is unrecognized.
  5. java从property中取值,JAVA读取PROPERTIES配置文件
  6. VS2005 宽字符 unicode字符集和多字节字符集
  7. pdf expert for Mac分享 支持m1
  8. mysql存储过程into_MySQL存储过程中使用SELECT …INTO语句为变量赋值
  9. a表剔除b表 oracle,删除a表中和b表相同的数据
  10. 微软语音 AI 技术与微软听听文档小程序实践 | AI ProCon 2019
  11. c# 第七节 编程规范,vs中的各种设置
  12. 活动回顾 | 大咖云集“开源安全治理模型和工具”线上研讨会
  13. 设计方面的优秀网站推荐QWQ
  14. vue+element+上传图片插件
  15. 解决图像目标检测两框重叠问题
  16. spring-boot-devtools 快速重启的秘密!
  17. OpenHarmony在Amlogic A311D芯片平台的快速开发上手指南
  18. 线性代数 05.07 用合同变换法化二次型为标准形
  19. HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV等颜色模型简介
  20. JMeter业务实现1:使用SSL Manager实现https双向认证

热门文章

  1. 移动端(iphone)上使用canvas绘图,为canvas添加了监听点击事件,结果在iphone上点击会出现闪屏
  2. 时序扩展的UML状态图的测试用例生成研究
  3. 统信UOS家庭版安装VMware16
  4. 硕士研究生学位论文格式模板
  5. tensorflow报错:AttributeError: 'module' object has no attribute 'get_or_create_global_step'
  6. android 呼入电话游戏闪退,安卓手机游戏卡顿、闪退问题解决方案
  7. 2022最新的高并发多线程面试题,一文掌握offer钥匙
  8. JAVA 实现PDF转图片格式
  9. Linux启动时错误:Attempted to kill init
  10. 图片(矩阵)相似度计算