一张图片引发的思考——Android图片加载

从今年四月开始规划我们客户端内存优化相关事宜,直到现在仍然觉得自己对此依然仅仅是窥豹一斑。只是不断地有新的感悟和理解。

一开始用Mat分析内存应用内存时对图片占用内存这一块实在是不能理解,为什么只有20几K的图片加载到内存中会占用0.5兆甚至更大的空间,百思不得其解啊。。。直到。。。

看到Bitmap.Config类中的说明,才恍然大悟~
枚举变量
public static final Bitmap.Config  ALPHA_8      每个像素占一个字节
public static final Bitmap.Config  ARGB_4444    每个像素占2个字节(已被弃用)
public static final Bitmap.Config  ARGB_8888    每个像素占4个字节
public static final Bitmap.Config  RGB_565      每个像素占两个字节

A  R  G  B
透明度 红色 绿色 蓝色
以上这些变量其实这都是色彩的存储方法:ARGB指的是一种色彩模式,里面A代表Alpha,R表示red,G表示green,B表示blue,其实所有的可见色都是右红绿蓝组成的,所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值。位图位数越高代表其可以存储的颜色信息越多,当然图像也就越逼真。
我们首页一张运营位的图片本身有33KB(640*214),这样图片被加载到内存中就会占到0.52兆的内存空间。
默认的配置是ARGB_8888,这样就会占用更多的内存!很容易OOM,因此如果对图片质量要求不高的话,可以使用占用内存较小的配置参数,以下是分别使用ARGB_8888和RGB_565我们应用对内存的使用情况:
两张图的访问路径基本一致,可以明显看出使用RGB_565可以有效地改善内存使用的情况。后续可能还需要团队的UED同学帮助确认一下这种损耗是否可以接受,嗯。

posted on 2013-05-28 20:26  Jessie~Alexandery  阅读(243)  评论(0编辑  收藏  举报

导航