Imageloader<2>-整体思路
2015-12-07 20:49
225 查看
避免加载图片出现卡顿,主要是在getView的过程中,采用 异步加载+回调显示。
伪代码如下
class Imageloader{
getView(){
目标:根据URL查找Bitmap
1.首先从缓存LruCache中查找对应的Bitmap
—> 找到直接返回
—> 找不到 url–Task–TaskQueue且发送一个通知去提醒后台轮询线程 (如果根据URL找不到对应的Bitmap , 则启动一个Task,放到TaskQueue中然后通知后台轮询线程)
}
关于Task肯定是一个线程,所有的业务逻辑均在run方法中实现
Task—run(){
总体目标:根据URL去加载图片。 不可能加载实际的图片,需要对其进行压缩。
具体步骤:
1. 获取图片的大小
2. 使用Options对图片进行压缩
3. 加载图片切放入到LruCache中
}
关于后台轮询线程,我们这里采用adnroid异步消息处理框架,采用Looper+Message+Handler的模式。
后台轮询线程的主要作用是: 从TaskQueue中获取一个Task交给线程池,去执行Task-run()中的业务逻辑。
伪代码如下
class Imageloader{
getView(){
目标:根据URL查找Bitmap
1.首先从缓存LruCache中查找对应的Bitmap
—> 找到直接返回
—> 找不到 url–Task–TaskQueue且发送一个通知去提醒后台轮询线程 (如果根据URL找不到对应的Bitmap , 则启动一个Task,放到TaskQueue中然后通知后台轮询线程)
[code]}
}
关于Task肯定是一个线程,所有的业务逻辑均在run方法中实现
Task—run(){
总体目标:根据URL去加载图片。 不可能加载实际的图片,需要对其进行压缩。
具体步骤:
1. 获取图片的大小
2. 使用Options对图片进行压缩
3. 加载图片切放入到LruCache中
}
关于后台轮询线程,我们这里采用adnroid异步消息处理框架,采用Looper+Message+Handler的模式。
后台轮询线程的主要作用是: 从TaskQueue中获取一个Task交给线程池,去执行Task-run()中的业务逻辑。
相关文章推荐
- 黑马程序员——C语言——数组和字符串
- 企业版app在iOS8上无法安装的几个问题解决
- nginx连接memcached
- Servlet工作原理学习
- MQ测试:发出第一条MQ消息
- Kafka学习5_server.properties系统配置说明
- CCSpriteBatchNode 是批处理节点
- xtrabackup 详解(转)
- Xcode7~7.3.1 真机调试:An App ID with Identifier 'cn.a12study.jcjy' is not available. Please enter a dif
- hdu 2196 树形DP
- 安装Apache(2.4.17)、MySQL(5.5.46)、PHP7、Nginx(1.8)
- having 和group by
- js插件自动完成
- hdu2150 Pipe (判断线段是否相交)
- 学习路上之初识MongoDB
- [onethink ucenter] 跨域名单点登录关键点
- Perl学习
- 1207整理
- [Bash Shell] Shell学习笔记
- [TwistedFate]初级数据持久化