glide-源码解析-1

本文深入解析Glide图片加载库,重点探讨Glide如何通过with方法与Activity/Fragment绑定,以及RequestManager如何感知和管理组件的生命周期。通过对with方法的分析,揭示了Glide创建无UI SupportRequestManagerFragment以监听生命周期的机制,同时概述了RequestManager如何在生命周期事件中启动、暂停和销毁请求。
摘要由CSDN通过智能技术生成

glide-源码解析-1

一、前言

Glide是一个快速高效的Android图片加载库,注重于平滑的滚动。Glide提供了易用的API,高性能、可扩展的图片解码管道(decode pipeline),以及自动的资源池技术。
Glide 支持拉取,解码和展示视频快照,图片,和GIF动画。Glide的Api是如此的灵活,开发者甚至可以插入和替换成自己喜爱的任何网络栈。默认情况下,Glide使用的是一个定制化的基于HttpUrlConnection的栈,但同时也提供了与Google Volley和Square OkHttp快速集成的工具库。
虽然Glide 的主要目标是让任何形式的图片列表的滚动尽可能地变得更快、更平滑,但实际上,Glide几乎能满足你对远程图片的拉取/缩放/显示的一切需求。

官方github链接地址:https://github.com/bumptech/glide
简体中文文档:https://muyangmin.github.io/glide-docs-cn/
本篇基于4.10.0版本做分析

二、使用

Glide.with(fragment).load(url).into(imageView)

Glide.with(this)
.load(url)
.placeholder(xx)
.error(xx)
.override(w,h)
.fitCenter(xx)
.centerCrop(xx)
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.priority(Priority.HIGH)
.into(imageView)

三、主流程

ModelLoader DataFetcher
decode
Transformation
ResourceTranscoder.transcode
Model
Data
Resource
TransformedResource
TranscodedResource
Target

主流程是整个glide的脉络主线,只有牢记glide主流程,才不会陷入glide细节代码中,更好理解glide

四、with

先从glide最简单的使用开始

Glide.with(this).load(url).into(imageView)

image

可以看到Glide类提供了多个静态with方法,参数类型不同而已,之所以这么做

  1. 是为了更方便的为调用者使用
  2. 是将Glide图片加载与当前组件(context, fragment, activity)绑定在一起,一当组件生命周期结束,图片加载也就停止,最大程度减少资源开销
// Glide.java
  @NonNull
  public static RequestManager with(@NonNull Context context) {
   
    return getRetriever(context).get(context);
  }
  
  public static RequestManager wit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值