gpt4 book ai didi

android - 如何回收位图? - 位图大小超出 VM 预算

转载 作者:搜寻专家 更新时间:2023-11-01 09:05:37 24 4
gpt4 key购买 nike

我有这个函数可以从 SD 加载一个大位图并旋转它。

但在第二次或第三次旋转后,我得到一个位图大小超出 VM 预算错误。

有什么想法吗?我确实回收旧位图,不是吗?

public void next(String s, int d)
{

if ( mBitmap!=null ) { mBitmap.recycle(); }

deg = deg + d;
mBitmap = BitmapFactory.decodeFile(s);

Matrix matrix = new Matrix();
matrix.postRotate(deg);
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth() , mBitmap.getHeight(), matrix, true);

谢谢!

最佳答案

当您没有正确使用位图时,内存不足的错误并不少见。

Bitmaps take up a lot of memory, especially for rich images like photographs. For example, the camera on the Galaxy Nexus takes photos up to 2592x1936 pixels (5 megapixels). If the bitmap configuration used is ARGB_8888 (the default from the Android 2.3 onward) then loading this image into memory takes about 19MB of memory (2592*1936*4 bytes), immediately exhausting the per-app limit on some devices.

有一个很棒的安卓指南 how to use Bitmaps efficiently.

按照指南,您应该能够在不损失任何可见质量的情况下显着减少内存消耗,避免不必要的崩溃。

关于android - 如何回收位图? - 位图大小超出 VM 预算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12125428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com