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()中的业务逻辑。

相关文章
|
1月前
|
存储 编译器 程序员
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
64 2
|
前端开发
SUPER BIG系列!大到夸张的一图——展示前端知识体系
SUPER BIG系列!大到夸张的一图——展示前端知识体系
49 0
|
缓存
Imageloader<1>-总体简介
Imageloader<1>-总体简介
39 0
|
缓存 Java
Imageloader<6>-mUIHandler的初始化
Imageloader<6>-mUIHandler的初始化
64 0
关于Java继承,咱不得不说的4个要点
关于Java继承,咱不得不说的4个要点
107 0
|
Java 编译器 C语言
【重学C/C++系列(八)】:如何理解C++中的void*?
首先void*中的void代表一个任意的数据类型,"星号"代表一个指针,所以其就是一个任意数据类型的指针。
【重学C/C++系列(八)】:如何理解C++中的void*?
图+源码,读懂View的Draw方法(二)
本文将继续讲述 View 绘制三大方法的最后一个方法——Draw 方法。该方法不会很复杂,相信大家很快可以弄懂。
图+源码,读懂View的Draw方法(二)
|
前端开发 Android开发
图+源码,读懂View的Draw方法(一)
本文将继续讲述 View 绘制三大方法的最后一个方法——Draw 方法。该方法不会很复杂,相信大家很快可以弄懂。
图+源码,读懂View的Draw方法(一)
|
Android开发
图+源码,读懂View的Measure方法
本篇是 读懂View 系列的第二篇文章,本文将给大家正式开始讲解View绘制的三大方法,本篇将讲述第一个方法—— Measure 方法。
图+源码,读懂View的Measure方法
|
安全 Android开发 Kotlin
viewBinding的使用记一次重构项目的过程
最近放寒假了,终于有空做项目了,想着把之前的一些项目重构一下,碰巧重构到 view Binding 这块,之前都是用 kotlin 的那个扩展,其实刚开始做项目的时候这个就已经废弃了,由于当时自己有点懒,没去学习这个新的代替方案,所以就成为一个历史遗留的问题,参考官方文档
181 0