在我的应用程序中,我有一个数据库用于存储图像,但是当我尝试在BitMap中检索图像时,logcat显示OutOfMemoryError。当我从数据库中仅检索到一个图像时,不会出现此错误(当我不使用do while循环我代码运行良好)。请帮助我是android的新手。
此类尝试从db检索图像:
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
最佳答案
您可能不应该在数据库中存储位图。只需将它们存储在文件存储中,并将文件路径保留在数据库中即可。