图片加载的学习体会吧
2016-04-25 11:44
155 查看
图片的加载 主要是为了避免OOM 使用LruCache管理图片加载使用的内存大小 其次是为了速度 加载速度, 使用加载策略(FIFO和LIFO 俩种,FIFO是默认的加载策略不适用) 一般使用LIFO 加载策略 从用户看到的开始加载。
LruCache 的使用
// 主要以App 的最大可使用内存 作为基准 来 决定 使用多少 可使用内存用于图片的加载
int maxMemory = (int) Runtime.getRuntime().maxMemory();
int cacheMemory = maxMenmory / 5;
mLruCache = new LruCache <String,Bitmap>(cacheMemory){
//这里复写 sizeof()方法,去计算加载进来的图片 所占的大小
protected int sizeof(String key,Bitmap value){
return value.getRowBytes()*value.getHeight();
}
};
加载策略 的实现 方式 主要 是靠 集合作为任务队列 使用 FIFO 就从任务队列的 头取出 显示 , LIFO反之 (每个图片加载都是 一个任务 ,加载策略就是按那种 策略 的顺序去执行加载任务的先后而已)
这里就只贴 一部分 代码 了 ,大家能看懂就好。(看不懂,就看不懂吧 ,我懂就行了 , 水平菜,没指望说明白谁)
//用 一个集合 作为任务队列 使用
[align=left]privateLinkedList<Bitmap>mTaskQueue;[/align]
[align=left] if(如果是FIFO){[/align]
[align=left] 就从 mTaskQueue.removeFirst();取出这个图片加载的任务[/align]
[align=left] }else if (如果是LIFO){[/align]
[align=left] 就从 mTaskQueue.removeLast();取出这个图片加载的任务[/align]
[align=left] }[/align]
[align=left]差不多就是这些了,都是鸿洋的代码 ,我也就是看了 大神的代码 ,异步加载的 那个 说起来麻烦,就哈哈哈哈,自己看吧,其实就是把 就是模仿的handle的通信机制 去做的。 哈哈哈,我是这样看的,错了就不怪我了[/align]
[align=left]感谢鸿洋大神 的 慕课 和CSDN ;[/align]
/article/1580283.html。
LruCache 的使用
// 主要以App 的最大可使用内存 作为基准 来 决定 使用多少 可使用内存用于图片的加载
int maxMemory = (int) Runtime.getRuntime().maxMemory();
int cacheMemory = maxMenmory / 5;
mLruCache = new LruCache <String,Bitmap>(cacheMemory){
//这里复写 sizeof()方法,去计算加载进来的图片 所占的大小
protected int sizeof(String key,Bitmap value){
return value.getRowBytes()*value.getHeight();
}
};
加载策略 的实现 方式 主要 是靠 集合作为任务队列 使用 FIFO 就从任务队列的 头取出 显示 , LIFO反之 (每个图片加载都是 一个任务 ,加载策略就是按那种 策略 的顺序去执行加载任务的先后而已)
这里就只贴 一部分 代码 了 ,大家能看懂就好。(看不懂,就看不懂吧 ,我懂就行了 , 水平菜,没指望说明白谁)
//用 一个集合 作为任务队列 使用
[align=left]privateLinkedList<Bitmap>mTaskQueue;[/align]
[align=left] if(如果是FIFO){[/align]
[align=left] 就从 mTaskQueue.removeFirst();取出这个图片加载的任务[/align]
[align=left] }else if (如果是LIFO){[/align]
[align=left] 就从 mTaskQueue.removeLast();取出这个图片加载的任务[/align]
[align=left] }[/align]
[align=left]差不多就是这些了,都是鸿洋的代码 ,我也就是看了 大神的代码 ,异步加载的 那个 说起来麻烦,就哈哈哈哈,自己看吧,其实就是把 就是模仿的handle的通信机制 去做的。 哈哈哈,我是这样看的,错了就不怪我了[/align]
[align=left]感谢鸿洋大神 的 慕课 和CSDN ;[/align]
/article/1580283.html。
相关文章推荐
- 资源分配问题
- 【.net 深呼吸】自定义缓存配置(非Web项目)
- linux设置定时任务
- hp prodesk 498g2 mt 升级win10后网卡红叉叉,灯不闪烁
- Google protocol buffers 小结(二)
- C/C++ volatile让你看的更明白
- LeetCode 215. Kth Largest Element in an Array
- rpm命令汇总
- SVN提交改动时报错You must input more than 5 chars as comment!
- 关于Weex你需要知道的一切
- linux top命令详解
- 论div,button,input点击跳转页面不同window.open()
- OpenCv学习笔记(四)--Mat基本图像容器Mat对象信息头,矩阵体的创建,深复制,浅复制详解
- apache本地配置多域名(wampserver本地配置多域名)
- kafka简单安装部署
- centos 7安装jdk和elk
- Android 项目 UI混乱,Button变大,解决方案
- 阿里云ecs云服务器安装wdcp控制面板教程(推荐CentOS6.5)
- 阿里百川与极客邦科技达成战略合作 Weex宣布开源
- C#日期时间格式化