3
こんにちは、たくさんのビットマップを読み込むときにメモリがクラッシュするのを防ぐためのテストコードです。そして、私は少し疑問を持って、次のコード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つのバイトを取ります。 1ピクセル当たり16ビットは、すべてのビットマップに対して一定であるか、可変である(画面密度または画質に依存する)。その変数の場合、どのようにBitmapクラスからその比率を得ることができますか? URLからダウンロードするコードのthats事前
で
感謝:
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