释放位图内存的正确方法
Proper way to release bitmap memory
我正在开发我的第一个 Android 应用程序。我有一个方法可以创建两个位图和 returns 第三个位图,它是第二个位图在第一个位图之上的叠加层。所以基本上,一旦创建了第三个位图,我就不需要这两个位图了。
我已经阅读了一些关于释放位图内存的帖子和文章,但我对如何处理它有点困惑。
我必须自己发布位图吗?如果是,这样做的正确方法是什么?方法完成后它们会被释放吗?我应该让垃圾收集器释放它吗?
public static Bitmap bitmapResizeOverlay(Context context, Uri selectedImage, int maxWidth,
int maxHeight, @DrawableRes int overlayImageResource) {
Bitmap selectedBitmap = bitmapResize(context, selectedImage, maxWidth, maxHeight);
Bitmap overlayBitmap = BitmapFactory.decodeResource(context.getResources(), overlayImageResource);
return overlayBitmapToBottom (selectedBitmap, overlayBitmap);
}
selectedBitmap.recycle()
该方法常用于清除位图占用的内存。
不回收位图的缺点可能是 OOM(内存不足异常)
我正在开发我的第一个 Android 应用程序。我有一个方法可以创建两个位图和 returns 第三个位图,它是第二个位图在第一个位图之上的叠加层。所以基本上,一旦创建了第三个位图,我就不需要这两个位图了。 我已经阅读了一些关于释放位图内存的帖子和文章,但我对如何处理它有点困惑。
我必须自己发布位图吗?如果是,这样做的正确方法是什么?方法完成后它们会被释放吗?我应该让垃圾收集器释放它吗?
public static Bitmap bitmapResizeOverlay(Context context, Uri selectedImage, int maxWidth,
int maxHeight, @DrawableRes int overlayImageResource) {
Bitmap selectedBitmap = bitmapResize(context, selectedImage, maxWidth, maxHeight);
Bitmap overlayBitmap = BitmapFactory.decodeResource(context.getResources(), overlayImageResource);
return overlayBitmapToBottom (selectedBitmap, overlayBitmap);
}
selectedBitmap.recycle()
该方法常用于清除位图占用的内存。 不回收位图的缺点可能是 OOM(内存不足异常)