android setimageuri占用内存,Android性能优化:Bitmap详解&你的Bitmap占多大内存?

在开发app时,显示一张本地图片,这张图片在加载时会占用大多内存呢?猜测占用内存大小和以下几个因素有关:

设计师切图,图片本身的分辨率;

图片所放文件夹代表的 密度 dpi;

手机自身的屏幕密度;

经过系统缩放得到的最终加载到手机上图片的密度和占用的内存。

我们知道Android中在加载本地大图时,很容易OOM,主要原因在于加载的Bitmap占用内存太大。接下来将围绕以下几个问题说明如何计算一张Bitmap占用的内存大小。

将一张分辨率为 720x1080 的图片放到 xxhdpi 或者 hdpi ,同放在 xhdpi 标准文件夹下,对于同一台手机占用内存大小是否有变化?

同一张分辨率为 720x1080 的图片被不同屏幕分辨率的手机加载,BitmapFactory 的成员变量 inDensity、 inScreenDensity、 inTargetDensity 会怎样变化?这些值又是怎样被赋值的,又是怎样进行缩放的?

使用 decodeResource() 和 decodeStream() 有什么区别?

Options 的 inDensity、 inTargetDensity 和 输出的 Bitmap 的 mDensity 有什么关系?Bitmap 的 mWidth、 mHeight 与 Options 的 outputWidth、 outputHeight 有什么关系?

这些同计算 Bitmap 内存占用大小的 长宽有什么关系?

在回答这些问题之前,先介绍一下DisplayMetrics和Bitmap及其相关类。

一、DisplayMetrics和Bitmap及其相关类

你可能感兴趣的:(android,setimageuri占用内存)