Android OutOfMemoryError:没有可用的堆栈

Android OutOfMemoryError:没有可用的堆栈,android,android-sqlite,Android,Android Sqlite,我使用SQLite数据库在我的应用程序中存储数据。以下是我如何访问异步任务数据的示例: ArrayList < Data > allMessages = new ArrayList<>(); String query = "SELECT * FROM .........."; SQLiteDatabase db = this.getWritableDatabase(); Cursor c = db.rawQuery(query, new String[]{username

我使用SQLite数据库在我的应用程序中存储数据。以下是我如何访问异步任务数据的示例:

ArrayList < Data > allMessages = new ArrayList<>();
String query = "SELECT * FROM ..........";
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery(query, new String[]{username});
try {
    if (c.moveToFirst()) {
        do {
            Data data = new Data(c.getString(0),.....)
            allMessages.add(data);
        } while (c.moveToFirst());
    }
} finally {
    c.close();
}
目前,我的数据库包含大约20条记录,我相信这不足以导致内存溢出


谢谢你的阅读

您的问题是,您只读取第一条记录,因为您使用

} while (c.moveToFirst());
这将只读取第一条记录,而您的
ArrayList
将填满第一条记录的数百万份副本。。您最终会得到一个
OutOfMemory
错误


相反,使用

} while (c.moveToNext());

它将正确读取所有记录。

}而(c.moveToFirst())这是一个无限循环。你只是在读第一条记录,永远你的意思是
}而(c.moveToNext())} while (c.moveToNext());