Fresco与Glide/android-gif-drawable/加载Gif 对比理解

1.Fresco加载Gif

Fresco加载Gif会导致线程频繁GC,内存曲线波动比较大

 至于为什么Fresco加载GIF会导致大量GC

https://www.jianshu.com/p/48ef2ca5cdae

解释一句是因为Fresco的缓存了太多的图片,并且占用的是BitmapMemory,会导致内存暴增。

2.Glide加载Gif

Glide加载网络的GIF也是比较简单

Glide.with(this)
        .asGif()
        .load(figureUrl)
        .into(mBinding.aiGirlLayout.girlGifSdv);

与普通的加载不同的也只是多一行asGif。

 

从上图上可以看到虽然是内存比较平稳也没有频繁GC,但是可以看到也是创建大量的Bitmap对象,但是相较于Fresco内存上会比少150M。

但是不管是使用Fresco与Glide加载GIF都要进行停止动画操作,不然会导致内存无法释放。

使用Glide停止动画操作

if (mBinding.aiGirlLayout.girlGifSdv.getDrawable() != null) {
    Drawable drawable = mBinding.aiGirlLayout.girlGifSdv.getDrawable();
    if (drawable instanceof GifDrawable){
        GifDrawable drawable1 = (GifDrawable)drawable;
        if (drawable1.isRunning()) {
            drawable1.stop();
        }
    }
}

使用android-gif-drawable与上面两种不同的是加载本地的图片与下载到本地Uri

https://github.com/koral--/android-gif-drawableicon-default.png?t=M666https://github.com/koral--/android-gif-drawable是不支持网路图片直接进行加载

我这边没有实现进行对比,此篇文章可以看到对比差异

https://www.jianshu.com/p/20607215eb7f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值