Android OutOfMemoryError:没有可用的堆栈
我使用SQLite数据库在我的应用程序中存储数据。以下是我如何访问异步任务数据的示例: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
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());