文档章节

Android客户端缓存机制(文字缓存跟多媒体文件缓存)

JayPark不作死
 JayPark不作死
发布于 2014/10/13 11:08
字数 1057
阅读 665
收藏 12

Android客户端缓存机制(文字缓存和多媒体文件缓存)

客户端缓存机制是android应用开发中非常重要的一项工作,使用缓存机制不仅仅可以为用户节省3G流量,同时在用户体验方面也是非常好的选择.

缓存机制分为两部分,一部分是文字缓存,另一部分是多媒体文件缓存.

 缓存文件保存策略:

1.       文字缓存:

文字缓存应该分为两种,一种是更新比较频繁的区域,一种是更新不频繁的区域.

根据两者的更新频率区分它们的过期时间.

更新比较频繁的区域,它的缓存过期时间应该为应用程序内(即应用程序从打开到关闭的这段时间).这种情况会有专门的缓存文件夹存放该类缓存文件,以及专门的缓存数据库表存放信息.每次应用程序启动的时候都会先将该类数据清空.

 另一种很少更新的区域,它的缓存不设置过期时间,而是提供一个按钮或者Menu可以让用户选择手动更新(如我的好友列表,我的订阅,我的分享.等等….)

 (1)通常情况下,我们与服务器交互都是采用JSON格式获取数据的,获取的JSON数据仅仅是一段字符串,我们可以考虑将这些字符串使用文件流写入一个TXT,保存到

SD卡中,在数据库添加该数据的记录.添加数据库记录时,提供两个关键字段,一个是

请求的URL,另一个则是本地保存后的文件地址.日后每次向服务器发起请求之前都会根据URL在数据库中检索.

该方法好处:降低系统数据库数据量,不会出现数据库满了的现象.

缺点:IO操作频繁,有时代码书写有误会造成内存泄露等状况.

 (2)将JSON数据解析后装入List<Map>对象中,然后遍历List,将数据统统写入相应的数据库表结构中,以后每次向服务器发起请求之前可以先在数据库中检索,如果有直接返回.

该方法好处:如果本地存在文字缓存,那么读取缓存速度快.

缺点:增加数据库数据量.

 2.       多媒体文件缓存

(1)    图片缓存

图片的缓存可以根据当前日期,时间为名字缓存到SD卡中的指定图片缓存目录,

同时数据库中做相应记录,记录办法可以采用两个关键字段控制,一个字段是该图片的URL地址,另一个字段是该图片的本机地址.取图片时根据URL在数据中检索,如果没有则连接服务器下载,下载之后再服务器中作出相应记录.

(2)    视频文件缓存

考虑到视频文件就是动画片,每一集的大小应该超过20MB,如果边播放边下载的话

用户的3G流量负担是很大的,而且用户看完一集动画片,基本上不会再去看第二遍.

从这个状况来看,建议不要对视频文件进行下载缓存.另外也能降低程序员的编码负担.

当然我们可以为一些动漫发烧友提供一个下载动画片的按钮,供他们下载喜欢的动画片,甚至也可以设置如果要下载动画片会付出一些代价等等.

 缓存文件删除策略:

1.       每一个模块在每次客户端自动或者用户手动更新的时候删除相应模块的缓存文件,并重新下载新的缓存文件.

2.       在设置界面中提供删除缓存的功能,点击后删除本机所有缓存.

 本地客户端与服务器交互流程图如下:


本文转载自:http://blog.csdn.net/hero_zhouwu/article/details/9091825

共有 人打赏支持
JayPark不作死
粉丝 15
博文 51
码字总数 13622
作品 0
苏州
程序员
私信 提问
Android 开源框架Glide的使用

是一个快速高效的多媒体管理和图像加载的框架,封装了平台的多媒体的解码,内存和硬盘缓存等,支持解码、显示视频、图像和GIFs,Glide是基于定制的下面是关于Glide的配置和使用。 Glide的配置...

记录自己的点点滴滴
08/06
0
0
Android WebView:这是一份 详细 & 易懂的WebView学习攻略(含与JS交互、缓存构建等)

前言 现在很多里都内置了Web网页(),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是里一个叫组件实现 今天,我将献上一份全面 & 详细的 攻略,含具体...

Carson_Ho
05/21
0
0
Android WebView:这是一份全面 & 详细的WebView学习指南

前言 现在很多里都内置了Web网页(),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是里一个叫组件实现 今天,我将献上一份全面 & 详细的 攻略,含具体...

carson_ho
04/19
0
0
Android Hybrid开发:这是一份详细 & 全面的WebView学习攻略

前言 现在很多里都内置了Web网页(),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是里一个叫组件实现 今天,我将献上一份全面 & 详细的 攻略,含具体...

Carson_Ho
06/19
0
0
腾讯技术分享:Android版手机QQ的缓存监控与优化实践

本文内容整理自公众号腾讯Bugly,感谢原作者的分享。 1、问题背景 对于Android应用来说,内存向来是比较重要的性能指标。内存占用过高,会影响应用的流畅度,甚至引发OOM,非常影响用户体验。...

JackJiang2011
04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
1
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
1
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
4
0
hadoop垃圾回收站

在生产生,hdfs回收站必须是开启的,一般设置为7天。 fs.trash.interval 为垃圾回收站保留时间,如果为0则禁用回收站功能。 fs.trash.checkpoint.interval 回收站检查点时间,一般设置为小于...

hnairdb
昨天
3
0
腾讯与Github的魔幻会面背后的故事…

10月22日,腾讯开源管理办公室有幸邀请到Github新晋CEO Nat Friedman,前来鹅厂参观交流。目前腾讯已经有近70个项目在Github上开源,共获得17w stars,世界排名11位。Github是腾讯开源的主阵...

腾讯开源
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部