您的位置:首页 > 其它

图片加载的学习体会吧

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: