假设我在一个位图对象中加载了一个图像,如下所示
Bitmap myBitmap = BitmapFactory.decodeFile(myFile);现在,如果我加载另一个位图,会发生什么呢
myBitmap = BitmapFactory.decodeFile(myFile2);第一个myBitmap会发生什么?它会被垃圾回收吗?还是我必须在加载另一个位图之前手动对其进行垃圾回收。myBitmap.recycle()
另外,有没有更好的方法来加载大图像,并在回收的过程中一个接一个地显示它们?
发布于 2011-07-11 17:31:34
在加载下一个图像之前,您需要调用myBitmap.recycle()。
根据myFile的来源(例如,如果它是您无法控制原始大小的内容),在加载图像时,而不是简单地重新采样某个任意数字,您应该将图像缩放到显示大小。
if (myBitmap != null) {
myBitmap.recycle();
myBitmap = null;
}
Bitmap original = BitmapFactory.decodeFile(myFile);
myBitmap = Bitmap.createScaledBitmap(original, displayWidth, displayHeight, true);
if (original != myBitmap)
original.recycle();
original = null;我在活动开始时初始化的静态缓存中缓存了displayWidth & displayHeight。
Display display = getWindowManager().getDefaultDisplay();
displayWidth = display.getWidth();
displayHeight = display.getHeight();https://stackoverflow.com/questions/3823799
复制相似问题