在我的应用程序中,我有一个数据库用于存储图像,但是当我尝试在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

最佳答案

您可能不应该在数据库中存储位图。只需将它们存储在文件存储中,并将文件路径保留在数据库中即可。

07-24 21:34