3
Hello im測試代碼以避免加載大量位圖時出現內存崩潰。我有一個小問題,關於下面的代碼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類中得到這個比例?
在此先感謝
那是從一個URL下載的代碼:
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;
}
:這裏如何清除位圖內存而不影響堆。 – naresh