您的位置:首页 > 移动开发 > Android开发

Android图片的三级缓存

2015-09-24 01:07 399 查看
图片的三级缓存:

1. 3.0之前Bitmap内存管理方式(软引用)--java--->JVM垃圾回收机制

1. 引用类型:

1. 强引用:没有变量引用就会gc
属性-->JVM
即使内存不够,应用崩溃,也不会回收

2. 软引用: jvm.gc()-->
如果内存不够的情况,gc会去回收软引用

3. 弱引用:jvm.gc() -->
只要开始gc,就会回收

4. 虚引用:只要gc就被清理.获取到的数据都为null
,用一次就没了

2. LRU: 缓存方式, Less Recently use, LruCache--->池子,装引用的池子

内存不足时.回收该容器的数据

3.sdcard/Android/data/包名:缓存目录,

1. ,这个目录不会被清除

2. 如果应用被卸载,这个目录会移除

ExecutorService
mThreadPool = Executors.newFixedThreadPool(3);


开启线程去网络获取图片,图片错位问题:

### 方案1:如果之前的线程没有执行玩,就取消之前的线程
Future<?> future = mFutures.get(iv);
if (future != null && !future.isDone()&&!future.isCancelled())
{
//正在执行

future.cancel(true);// 取消线程任务,不一定能成功

future = null;
}
future = mThreadPool.submit(new LoadImageTask(url,iv));
//
存储到标记中
mFutures.put(iv, future);

### 方案2:在设置ImageView的时候判断url是不是最新的url
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: