JasonWang's Blog

Glide详解之图片加载过程分析

在之前的一篇文章(Glide架构分析 )中介绍了Glide的具体原理。这篇文章,用一个下载图片的示例来说明Glide加载图片的整个过程。以下是用Glide从网络上加载一个图片的代码片段:

1
2
3
4
5
6
7
8
9
    
Glide
.with(activity) // Activity
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.crossFade()
.into(myImageView);

大致说来,在Glide中图片的加载有如下几个过程:

  • 产生一个图片加载的请求GenericRequest<T>;
  • 将图片加载请求发送给资源引擎中心Engine,由其负责资源的加载以及数据解码任务的管理;
  • EngineRunnable首先尝试从DISK加载资源,完成后进行回调,将数据加载到ImageView中;
  • 磁盘中没有请求对应的资源,则尝试从网络端下载,并解码完成后回调,将数据加载到Target对象;

现在就来详细的看下Glide加载图片的整个过程。

Glide详解之架构分析

Glide是BumpTech开发的一个同时可支持图片、GIF以及视频加载的Android开源库,同时Glide支持任何用户自定义的网络栈,其主要有以下几个特点:

  • 支持GIF格式动画的解码;
  • 支持本地视频加载解码;
  • 加载大图之前,可预先加载一个小图片
  • 自动管理资源加载请求的生命周期;
  • 给定图片尺寸,可以对资源进行自由转换

Github:https://github.com/bumptech/glide

这里就来分析下Glide的具体架构以及介绍其主要特点,分如下几个方面:

  • Glide代码架构及工作原理;
  • Glide如何自动管理资源加载请求的生命周期的?
  • Glide是如何进行图片的加载与转换的?