从内存优化视角再看 Glide 图片加载库

前置背景

Glide 作为常用的图片加载框架,框架层面已经对内存方面有不少优化,但作为一个图片框架,确保正确性一定是第一位的,因此在应用层还可以在适当的场景做一些额外的优化,当然你需要了解优化设置可能产生的问题。另外框架设计复杂性是很高的,但暴露给上层的 API 又非常简单,这导致我们忽略一些基本的工作原理,从而有意无意错误的使用框架。

这不是一篇 Glide 源码分析类的文章,如果对 Glide 使用还不够熟悉,不建议直接阅读。 以下文档结论基于 Glide v4+ 版本。

Glide 的一些特性

  1. 在不经其他额外配置的情况下 Glide 加载到内存中的 bitmap 大小不会超过视图大小本身,因此不会存在内存浪费。例如,网络图片原图大小为 200x200,但显示在页面中的 ImageView 控件大小为 100x100,Glide 内部最终解码的图片大小为 100x100。
  2. 若网络图片大小 > 控件宽或高,则默认情况下会按比例放大,返回一个满足宽高比例的位图。
  3. Glide v4+ 开始图片加载回归 ARGB_8888 格式作为默认 DecodeFormat。
  4. 如果加载图片时使用 RGB_565 格式,则实际运行不一定能够生效,主要是受两方面影响:1是如果图片本身包含透明度则仍会使用 ARGB_8888 格式,2是包含一些圆角或关于Alpha 的 Transform 变换,也会保持 ARGB_8888 格式。
  5. Glide 占用系统哪部分的内存?从 Android 8.0 开始,Bitmap 内存分配在 Native 堆,在未开启硬件位图前,还会在硬件层复制一份位图的拷贝࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值