谈谈Glide的二次封装和优化

 

为什么要二次封装?

1.所有图片加载统一的管理,改动只改一处牵涉小;

2.如果第三方库不满足需求或停止维护,替换工作量小;

怎么实现封装

对外提供统一的ImageLoader ,这个类是不变的,具体执行由GlideLoader

> - ImageLoader.init(Context context) //初始化
> - ImageLoader.trimMemory(int level); 
> - ImageLoader.clearAllMemoryCaches();
> - ImageLoader.getActualLoader(); //获取当前的loader 
> - ImageLoader.with(Context context) //加载图片
> - ImageLoader.saveImageIntoGallery(String url) // 保存图片到相册
> - ImageLoader.pauseRequests() //取消请求
> - ImageLoader.resumeRequests() //恢复请求(当列表在滑动取消请求,滑动停止恢复请求)
> - ImageLoader.clearDiskCache()//清除磁盘缓存(必须在后台线程中调用)
> - ImageLoader.clearMomoryCache(View view) //清除指定view的缓存
> - ImageLoader.clearMomory() // 清除内存缓存(必须在UI线程中调用)

图片的各种设置信息--SingleConfig

> - url(String url) //支持filepath、图片链接、contenProvider、资源id四种
> - thumbnail(float thumbnail)//缩略图
> - rectRoundCorner(int rectRoundRadius, int overlayColorWhenGif) //圆角半径
> - colorFilter(int color) //颜色滤镜
> - asCircle(int overlayColorWhenGif)//加载圆形图片
> - placeHolder(int placeHolderResId) //占位图
> - scale(int scaleMode) // 裁剪缩放
 > - animate( Animation animation) 引入动画

 

Glide的使用注意:降低内存和生命周期管理

1、升级到Glide4.0,使用asDrawable代替asBitmap,drawable更省内存
2、decode bitmap的时候,catch到OOM,可以尝试把采样比例再增加一倍之后,再次尝试decode
3、如果是处于 lowMemory 的时候,将图片的 DecodeFormat 设置为 RGB_565
4、使用glide自己的圆角图片。bitmapTransfrom
5、优化GIF  framework中的工具包FrameSequence    继承 AppGlideModule,重写方法替换  原理就是一帧帧设置改为两个bitmap分别绘制和解析
6、onTrimMemory,调用 Glide.cleanMemroy() 清理掉所有的内存缓存。

 

1、不使用application作为context。当context为application时,会把imageView是生命周期延长到整个运行过程中,imageView不能被回收,从而造成OOM异常
2、当列表在滑动的时候,调用Glide的pauseRequests()取消请求,滑动停止时,调用resumeRequests()恢复请求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值