跳转至

图片加载

Glide

图片加载流程

对图片的优化

内存泄漏的处理

- 多级缓存机制

缓存机制

软引用 --> LRUCache --> DiskLRUCache --> 网络

DiskLruCache --> 弱引用,当引用计数器为0时

图片加载优化

图片占用的大小

size = 原图高度 * (设备的 dpi / 目录对应的 dpi ) 新图的宽度 = 原图宽度 * (设备的 dpi / 目录对应的 dpi ) * 4

单张图优化

  • 放在合适drawable目录下
  • 图片加载框架加载
  • 减少图片格式,RGB565比RGB8888占用内存更少
  • 降低图片分辨率,BitmapFactory.Options.inSampleSize

指标监控

  • 大图监控
  • 缓存命中率
  • 内存占用大小
  • 图片加载成功率
  • 图片加载速度

高效加载图片

加载缩略图

BitmapFactory.Options解码图片,inJustDecodeBound选项,置为true的时候,解码出来的图片,只返回图片的宽高,并不把图片加载到内存中,然后调整合适的inSampleSize,缩放图片;

缓存

使用LruCache,根据设备可用内存,缩放后图片的大小,图片使用频率等情况设计缓存。还可以实现大图后台线程加载。

参考 Android高效加载大图、多图解决方案,有效避免程序OOM
https://juejin.cn/post/6987360280686624804
https://juejin.cn/post/7095565564029960206