【发布时间】:2016-06-16 10:09:05
【问题描述】:
在我的应用程序中,我有一个存储图像的数据库,但是当我尝试在 BitMap 中检索图像时,logcat 显示 OutOfMemoryError。当我从数据库中仅检索一个图像时(当我不使用 do while循环我的代码运行良好)。请帮助我是android的新手。
这个类尝试从数据库中检索图像:
class Abc {
ArrayList < ForBitMap > pic;
Abc() {
pic = new Abc < > ();
DataBaseClass objOfDataBaseClass = new DataBaseClass(context);
mCursor = objOfDataBaseClass.showData();
if (mCursor.moveToNext()) {
do {
byte[] mg = null;
mg = mCursor.getBlob(mCursor.getColumnIndex("image"));
Bitmap bitmap = BitmapFactory.decodeByteArray(mg, 0, mg.length);
pic.add(new ForBitMap(bitmap));
} while (mCursor.moveToFirst());
}
}
该类用于将值存储在 ArrayList(ArrayList pic;)中
class ForBitMap{
Bitmap btmp;
ForBitMap(Bitmap btmp){
this.btmp=btmp;
}
}
登录状态为:
java.lang.OutOfMemoryError: Failed to allocate a 82956 byte allocation with 30836 free bytes and 30KB until OOM
【问题讨论】:
-
尝试使用 largeHeap 。 developer.android.com/reference/android/…
-
@SagarNayak 当我使用 largeheep=true logcat 时显示相同的错误
-
你遇到了什么错误?
-
@SagarNayak 同样的错误 OutOfMemoryError 但之前显示 30kb 直到 oom 现在显示 64kb 直到 oom
-
@SagarNayak 在 largeheep=true 之后:OutOfMemoryError:无法分配 82956 字节分配,其中 66236 个空闲字节和 64KB 直到 OOM。在 largeheep=true 之前:无法分配 82956 字节分配,其中 30836 空闲字节和 30KB 直到 OOM?