Jamendo学习笔记之六:缓存

从Jamendo加载到进入主页,Jamendo中所涉及的两种缓存都已经涉及到。

(一) RequestCache(服务器请求缓存)

从服务器上下载数据非常耗时,并且耗电。所以避免重复下载很有必要。Jamendo的RequestCache的原则是:保留最近10次(这个值可以自己设定)的网络请求。如果超过,清除最早的缓存内容。在调用Call获取服务器数据时,香港服务器,首先在RequestCache中查找,是否存在,如果不存在,向服务器请求,并将请求到的数据加入缓存中。很好理解的流程。RequestCache的代码如下:

Note:RequestCache使用的存储集合是HashTable,它不允许Null的key和value,并且是同步安全的。因为存储的数量较少,且是最耗时的操作,存储空值无意义,所以选用HashTable。

HashTable相关内容,参看:

(二) ImageCache缓存(图片缓存)

图片缓存的流程图如下:

代码如下:

显然,ImageCache继承了WeakHashmap。

WeakHashmap非常重要。我专门做了一个整理,相关内容我的博文:

当然,我们仍然对ImageCache缓存的取舍不是很清楚。回到RemoteImageView的setImageUrl方法。代码如下:

1. 对两类图片(AlbumCover和RadioCover)进行处理,打了log之后,AlbumCover的大小在120k左右,主要用在播放页面做背景。RadioCover的大小在8k左右,主要用来显示图标。对两者的处理也不同。大小是15倍左右的关系。代码如下:

removeRadioCoversCache(dir,fileName);//对广播图片的缓存处理:比较小8k

对AlbumCover,因为它的文件大小比较大,所以统计是否超出总的缓存容量时,香港虚拟主机,以它的总大小计算就ok。代码如下:

对RadioCover,因为其所占空间很小,虚拟主机,所以按照时间来清理。超过指定日期的文件就清理掉。清除缓存(下载)超过指定天数的文件,只保存最近45天内的文件。代码如下:

2. 思考

这让做的好处是,抓住了真正耗时的关键,有的放矢。

人生难免有挫折,但你是逃避不了的,一定要去面对它

Jamendo学习笔记之六:缓存

相关文章:

你感兴趣的文章:

标签云: