目的:1防止oom 2,提高加载效率
bitmap对象默认 ARGB_8888高质量图片显示,而我起先使用rgb565格式图片呈现效果不变,内存减少近一半,但是从Android4.0开始该选项就无效了,即使设置了也按默认
第一级 强引用+软引用
采用LRU算法优化内存使用,内存不足时,把最小使用的图片优先从内存移除
强引用:LRUCache即可 覆写sizeOf返回每次加载Bitmap占用大小,覆写entryRemoved,在硬内存放满时和移除最少使用Bitmap
软引用:LinkedHashMap完成该算法,通过复写其removeEldestEntity方法实现
内存大小:各分配1/4
获取总内存大小:
intmenClass=((ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
关于url处理,存储url的hashCode,避免将来文件名非法,提高查找效率。
硬内存:宁可oom内存不足,也不会释放其中存储的数据;
软内存:一般其中的数据也不会被回收,但是当内存不足时,将释放其中的数据,释放掉后,如果将来还要使用,则先从本地加载,
第二级 本地缓存
同样采取LRU算法管理缓存文件,当SD卡剩余容量不足时,优先删除使用最少图片。
对存储图片根据使用时间生成LRU
第三级:网络读取
如果本地也没有,从网络重新加载.
三级缓存通过httpclient访问网络,先放到硬缓存里面,要读再去加载.