Glide加载Gif的卡顿优化思路分析
前言 Glide图片框架是可以直接加载GIF图的,但是做一个银行合作项目的时候,由于有需要出货页面需要加载一个GIF图,但是发现在使用Glide框架加载Gif图片,明显发现有延迟. 经过查看glide加载Gif图片的源码得知:Glide在加载Gif的图片帧的时候,上一帧的渲染以及下一帧的准备是串行的,这个过程中,如果出现下一帧的准备阶段时间超过了Gif间隔播放的时长,就会造成 播放卡顿 .而且此过程中,StandardGifDecoder只保留上一帧的数据,每次获取当前需要绘制的帧的时候都会从BitmapPool中获取新的Bitmap(注意,这是一个新的Bitmap对象),因此加载Gif过程中,Glide至少需要两个Bitmap.这也就导致 内存会消耗的过高 . 下面就来研究一下Glide是如何加载Gif,以及如何进行卡顿的优化了: Glide加载Gif原理初探 本文围绕以下关键字来介绍 Glide StreamGifDecoder ByteBufferGifDecoder StandardGifDecoder GifDrawable 1)首先来介绍一下Gif相关的解码器 Glide的构造中可以找到Gif的相关信息. Glide ( @NonNull Context context , /*.....*/ ) { //... List < ImageHeaderParser >