glide的面试相关问题

转载: 面试官:我们来聊聊Glide吧…… - 哔哩哔哩

内存缓存中读取图片的主流程:

  • 生成缓存的key。
  • 从LruCache获取缓存图片。
  • LruCache没取到,从弱引用获取图片。
  • 内存缓存取不到,进入异步处理。
  • 将正在加载的图片放到弱引用缓存
  • 使用完之后从弱引用删除图片缓存
  • 是否支持缓存,缓存到LruCache缓存
  • 不支持缓存直接调用垃圾回收,回收图片

Glide磁盘缓存流程

  • 读:先找处理后(result)的图片,没有的话再找原图。
  • 存:先存原图,再存处理后的图。

加载大图片时可能会超时,需要修改超时时间,也就是重写GlideModule。

RecycleView 使用glide实现图片瀑布流时一定要先计算好图片的宽高,并设置为ImageView的宽高,这样就可以使RecycleView复用模板,不会出现加载卡顿,以及加载导致内存溢出。

Glide加载图片变绿

原因,Glide默认加载图片的格式是DecodeFormat.PREFER_RGB_565
,缺少ALPHA通道,导致加载图片变绿。
解决方案

  Glide.setup(new GlideBuilder(context)

.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888));

Glide使用莫过于

Glide.with(context)
                .load(path)
                .priority(Priority.LOW)
                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                .into(imageView);


当context为application时,会把imageView是生命周期延长到整个运行过程中,imageView不能被回收,从而造成OOM异常。
解决方案:

1、不使用application作为context,这样imageView的生命周期就仅限于一个页面,不会出现OOM。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值