1、尽可能避免内存溢出;
a、根据图片的显示大小去压缩图片
b、使用缓存对我们的图片进行管理(lrucache)
2、用户操作UI空间必须充分流畅;
b、getView里面尽量不做耗时操作(异步加载加回调显示)
3、用户预期显示的图片尽可能的快;
图片的的加载策略LIFO 也提供FIFO供用户切换
ImageLoader
getView(){
url -> Bitmap
url -> LruCache查找
找到返回
找不到 url->Task->TaskQueue且
发送一个通知去提醒后台轮训线程
}
Task->run() 根据url 加载图片:对图片进行压缩
1、获得图片显示的大小
2、使用options对图片进行压缩
3、加载图片并放入Lrucache
后台轮询线程
TaskQueue->Task->线程池去执行
Handler + Looper + Message(android异步消息处理框架)
MessageQueue
LinkedList 有获得从第一个和最后一个取对象的方法
学习android 异步任务处理机制
Task ->TaskQueue->通知后台线程->把Task放入到他的内部任务队列(执行是瞬间的,所以我们之前的策略是无效的,需要引入信号量机制来acquire与release来进行控制)
a、根据图片的显示大小去压缩图片
b、使用缓存对我们的图片进行管理(lrucache)
2、用户操作UI空间必须充分流畅;
b、getView里面尽量不做耗时操作(异步加载加回调显示)
3、用户预期显示的图片尽可能的快;
图片的的加载策略LIFO 也提供FIFO供用户切换
ImageLoader
getView(){
url -> Bitmap
url -> LruCache查找
找到返回
找不到 url->Task->TaskQueue且
发送一个通知去提醒后台轮训线程
}
Task->run() 根据url 加载图片:对图片进行压缩
1、获得图片显示的大小
2、使用options对图片进行压缩
3、加载图片并放入Lrucache
后台轮询线程
TaskQueue->Task->线程池去执行
Handler + Looper + Message(android异步消息处理框架)
MessageQueue
LinkedList 有获得从第一个和最后一个取对象的方法
学习android 异步任务处理机制
Task ->TaskQueue->通知后台线程->把Task放入到他的内部任务队列(执行是瞬间的,所以我们之前的策略是无效的,需要引入信号量机制来acquire与release来进行控制)