文档章节

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

JayPark不作死
 JayPark不作死
发布于 2014/10/13 11:08
字数 1057
阅读 668
收藏 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 轻量级的开源缓存框架ASimpleCache 发布

ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件(由十几个类精简而来)。它的下载地址是:https://github.com/yangfuhai/ASimpleCache 1、它可以缓存什...

理工男海哥
2013/07/29
12
0
Android 开源框架Glide的使用

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

记录自己的点点滴滴
08/06
0
0
Android之ListView异步加载网络图片

wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改。本文分享wemall app商城源码Android之ListView异步加载网络图片(...

OSC_RjDivW
2016/11/30
288
0
腾讯技术分享:Android版手机QQ的缓存监控与优化实践

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

JackJiang2011
04/08
0
0
解决ListView拖动时背景黑色的问题

我们知道在Android中ListView是一个比较常用的UI控件,我们在大部分开发中都需要用到它,因此Android为我们提供了ListView的多种实现方法,通过自定义显示布局让显示的内容更加美观,但是我们...

无鸯
2011/09/06
571
0

没有更多内容

加载失败,请刷新页面

加载更多

中学生读《皮囊》有感相关体会4300字[图]

中学生读《皮囊》有感相关体会4300字[图]: 我们时常知道从哪里来,但很少知道自己要到哪里去,因为我们经常不认识自己,又怎能看见自己皮囊下最真实的面目?——题记 满怀欣喜去迎接五一,应...

原创小博客
10分钟前
2
0
java_集合

非并发集合 并发集合

grace_233
11分钟前
1
0
正则表达式匹配不包含

^((?!xxx).)*$

安小乐
22分钟前
1
0
python Windows tkinter应用开发3 列出目录的所有文件

在本章中,我们将编写程序来执行此操作。 1)选择文件夹。 2)在UI的标签部分打印该文件夹中的所有文件名(带文件扩展名)。 首先,修改selectFile函数以打开文件夹。主文件如下: from tki...

python测试开发人工智能安全
24分钟前
1
0
使用Laya引擎开发微信小游戏(上)

  使用一个简单的游戏开发示例,由浅入深,介绍了如何用Laya引擎开发微信小游戏。      img      作者:马晓东,腾讯前端高级工程师。      微信小游戏的推出也快一年时间了,...

SEOwhywhy
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部