上次有过电话面试中问到Android中的缓存策略,当时模糊不清的回答,现在好好理一下吧。
Android中一般情况下采取的缓存策略是使用二级缓存,即内存缓存+硬盘缓存—>LruCache+DiskLruCache,二级缓存可以满足大部分的需求了,另外还有个三级缓存(内存缓存+硬盘缓存+网络缓存),其中DiskLruCache就是硬盘缓存,下篇再讲吧!
1、那么LruCache到底是什么呢?...
分类:
移动开发 时间:
2015-07-21 18:42:03
阅读次数:
347
数据缓存,就是把从网络上加载过来的数据,存到本地,目的是方便以后调用相同数据的时候,直接读缓存,不需要网络请求,既节省了client端的时间成本,有节省了serve端的负载成本。ios当中,缓存的对象NSUrlCache,iOS 5之前:只支持内存缓存。从iOS 5开始:同时支持内存缓存和硬盘缓存。...
分类:
移动开发 时间:
2015-06-19 18:11:45
阅读次数:
166
数据缓存,就是把从网络上加载过来的数据,存到本地,目的是方便以后调用相同数据的时候,直接读缓存,不需要网络请求,既节省了client端的时间成本,有节省了serve端的负载成本。ios当中,缓存的对象NSUrlCache,iOS 5之前:只支持内存缓存。从iOS 5开始:同时支持内存缓存和硬盘缓存。...
分类:
移动开发 时间:
2015-06-12 13:05:21
阅读次数:
233
Why Cache有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的。上面的情况会造成以下问题
(1)用户流量的浪费
(2)程序响应速度不够快
解决上面的问题,一般考虑对数据进行缓存。数据缓存为了提高程序的响应速度,可以考虑使用缓存(内存缓存\硬盘缓存)r
第一次请求数据时,内存缓存中没有数据,硬盘缓存中没有数...
分类:
移动开发 时间:
2015-06-10 08:57:53
阅读次数:
156
缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。由于硬盘的内部数据传输速度和外界介面传输速度不同,缓存在其中起到一个缓冲的作用。缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能。当硬盘存取零碎数据时需要不断地在硬盘与内存之间交换数据,如果有大缓存,则可以将那些零碎数据暂存在缓存中,减小外系统...
分类:
其他好文 时间:
2015-05-26 09:09:35
阅读次数:
157
// 内存缓存的设置选项 (最大图片宽度,最大图片高度) 默认当前屏幕分辨率 // .memoryCacheExtraOptions(480, 800) // 硬盘缓存的设置选项 (最大图片宽度,最大图片高度,压缩格式,压缩质量,处理器) // .dis...
分类:
其他好文 时间:
2015-05-14 18:24:24
阅读次数:
110
??
硬盘缓存策略:
LimitedAgeDiscCache(设定文件存活的最长时间,当超过这个值,就删除该文件)
UnlimitedDiscCache(这个缓存类没有任何的限制)
继承关系:
public class LimitedAgeDiscCache extends BaseDiscCache
public abstractclass BaseDiscCach...
分类:
移动开发 时间:
2015-05-04 18:08:00
阅读次数:
187
概述记得在很早之前,我有写过一篇文章《Android高效加载大图、多图解决方案,有效避免程序OOM》,这篇文章是翻译自Android Doc的,其中防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网...
分类:
移动开发 时间:
2015-04-19 21:09:11
阅读次数:
304
概述记得在很早之前,我有写过一篇文章Android高效加载大图、多图解决方案,有效避免程序OOM,这篇文章是翻译自Android Doc的,其中防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上...
分类:
移动开发 时间:
2015-03-04 18:31:02
阅读次数:
287
DiskLruCache(https://github.com/JakeWharton/DiskLruCache)想必大家都很熟悉。(不熟悉的请看这里),它是jakewharton大神写的一个开源库,提供了硬盘缓存的方案。
但是该库的API比较简单,有时候并不能满足我们使用。比如说如果你想把缓存中的数据以Bitmap的形式返回,API并没有提供这样的方法,我们必须通过DiskL...
分类:
移动开发 时间:
2015-02-16 19:40:42
阅读次数:
128