[英]Bitmap memory management in Android
你好我测试代码,以避免在加载大量位图时内存崩溃。 我有一个小问题,关于以下代码
Bitmap bmp;
long sizepreload, sizepostload,bmppixels;
sizepreload= Debug.getNativeHeapAllocatedSize();
bmp=getImageBitmapFromUrl("http://www.google.com/intl/en_com/images/srpr/logo2w.png");
sizepostload=Debug.getNativeHeapAllocatedSize();
bmppixels=bmp.getHeight()*bmp.getWidth();
Log.d("bmp test","pre="+sizepreload+"\n" +
"post="+sizepostload+"\n" +
"bmppixels="+bmppixels+"\n"+
"ratio="+(sizepostload-sizepreload)/bmppixels
);
该片段的返回是:
pre=4260464
post=4333112
bmppixels=26125
ratio=2
因此位图每像素占用2个字节。 对于所有位图,每像素16位是恒定的,或者它是可变的(取决于屏幕密度或图像质量)。 如果它的变量如何从Bitmap类中获得该比率?
提前致谢
这是从网址下载的代码:
public static Bitmap getImageBitmapFromUrl(String url){
URL aURL;
Bitmap result = null;
try {
aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
result= BitmapFactory.decodeStream(is);
is.close();
} catch (Exception e) {
result=null;
e.printStackTrace();
}
return result;
}
位图每个像素最多可包含4个字节,这取决于位图的格式。 屏幕密度不可变。 但是,在绘制位图时,可能需要调整屏幕密度的大小,这会暂时影响您的堆。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.