知识摘抄本:
android设备的图片缓存:
1.内存缓存:图片缓存在设备的内存中,优点是快,缺点是消耗内存,所以不能太大,用要考虑分配的空间,应用重启后就会消失。
方法一:软引用SoftReference。
方法二:官网推荐LruCache:相当于线程安全的LinkedHashMap。必须要之道的区别:
LruCache封装了LinkedHashMap,提供了LRU(Least Recently Used 最近最少使用算法)缓存的功能;
LruCache通过trimToSize方法自动删除最近最少访问的键值对;
LruCache不允许空键值, LinkedHashMap允许;
LruCache线程安全, LinkedHashMap线程不安全;
继承LruCache时,必须要复写sizeOf方法,用于计算每个条目的大小。在put和get的时候会调用safeSizeOf(K key, V value),safeSizeOf(K key, V value)会调用 sizeOf (K key, V value),这个方法默认返回1。
2.外部缓存,图片缓存在磁盘上,磁盘可以是内部的存储空间也可以是外部的sd卡。外部缓存的优点是可以长久保存大量的数据(相比较内存缓存而言),缺点就是慢。
参考文档:
2.android中图片的三级cache策略(内存、文件、网络)之二:内存缓存策略
4.Android高效加载图片,有效避免程序OOM:zhang的blog,学习榜样~~~