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
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
相关文章推荐
- Android病毒查杀原理
- android问题汇总
- Android_Intent大全,Intent激活系统应用
- AndroidPopupWindow的用法
- Android中动画的详解
- 安装Android模拟器
- 如何离线增量升级Android Studio
- Android_handler源码分析,及介绍
- Android的事件的分发机制
- AndroidIPC进程间通信
- Android图片的处理
- 安装AndroidStudio
- AndroidAsyncTask异步任务加载
- AndroidOOM异常的处理
- Android屏幕适配
- Android LayoutInflater原理分析,深入理解View(一)
- Android必知必会-Handler可能引起的内存泄露
- Android必知必会-Handler可能引起的内存泄露
- Android--SlidingMenu第三方库实现侧滑效果
- 终于搭建成功Xamarin for Android平台