Imageloader<2>-整体思路

简介: Imageloader<2>-整体思路

避免加载图片出现卡顿,主要是在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()中的业务逻辑。

相关文章
|
Dart Java
Flutter Image内存--强引用分析方法
概述 据了解,很多Flutter业务上线后都出现内存占用较高的问题,首当其冲的是 Image 内存占用过多。 Image 图片内存过高,可能由于 Flutter ImageCache 对内存缺房控制力导致,也有可能是被业务代码强引用,泄漏导致。如果 Image 被业务强引用,则调整 ImageCache 容量,增加 gc 次数都没有效果。 面对这种“强引用”的泄漏
2209 0
Flutter Image内存--强引用分析方法
|
3月前
|
Java Android开发 Kotlin
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
Android项目架构设计问题之要在Glide库中加载网络图片到ImageView如何解决
32 0
|
缓存
Imageloader<1>-总体简介
Imageloader<1>-总体简介
38 0
|
前端开发 算法 API
《通过减少 draw call 提升渲染性能-沧东》演讲视频 + 文字版
《通过减少 draw call 提升渲染性能-沧东》演讲视频 + 文字版
243 0
|
Android开发
图+源码,读懂View的Measure方法
本篇是 读懂View 系列的第二篇文章,本文将给大家正式开始讲解View绘制的三大方法,本篇将讲述第一个方法—— Measure 方法。
图+源码,读懂View的Measure方法
图+源码,读懂View的Draw方法(二)
本文将继续讲述 View 绘制三大方法的最后一个方法——Draw 方法。该方法不会很复杂,相信大家很快可以弄懂。
图+源码,读懂View的Draw方法(二)
|
前端开发 Android开发
图+源码,读懂View的Draw方法(一)
本文将继续讲述 View 绘制三大方法的最后一个方法——Draw 方法。该方法不会很复杂,相信大家很快可以弄懂。
图+源码,读懂View的Draw方法(一)
|
Dart JavaScript 前端开发
|
机器学习/深度学习 新零售 移动开发
细化 Flutter List 内存回收,解决大 Cell 问题
何谓大 Cell 问题?在基于 Native List 的渲染方案中,都会遇到大 Cell 问题。比如 Weex 业务中,经常出现页面内存飙高,排查后发现多为前端写法导致的一个大 Cell 中存在过多图片,导致内存过高。
2084 0
细化 Flutter List 内存回收,解决大 Cell 问题