Android中的三级缓存机制

目的:1防止oom 2,提高加载效率

bitmap对象默认 ARGB_8888高质量图片显示,而我起先使用rgb565格式图片呈现效果不变,内存减少近一半,但是从Android4.0开始该选项就无效了,即使设置了也按默认

第一级  强引用+软引用 

采用LRU算法优化内存使用,内存不足时,把最小使用的图片优先从内存移除

强引用:LRUCache即可  覆写sizeOf返回每次加载Bitmap占用大小,覆写entryRemoved,在硬内存放满时和移除最少使用Bitmap

软引用:LinkedHashMap完成该算法,通过复写其removeEldestEntity方法实现

内存大小:各分配1/4

获取总内存大小:

int menClass=((ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
关于url处理,存储url的hashCode,避免将来文件名非法,提高查找效率。


硬内存:宁可oom内存不足,也不会释放其中存储的数据;

软内存:一般其中的数据也不会被回收,但是当内存不足时,将释放其中的数据,释放掉后,如果将来还要使用,则先从本地加载,


第二级  本地缓存

同样采取LRU算法管理缓存文件,当SD卡剩余容量不足时,优先删除使用最少图片。

对存储图片根据使用时间生成LRU

第三级:网络读取

如果本地也没有,从网络重新加载.

三级缓存通过httpclient访问网络,先放到硬缓存里面,要读再去加载.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值