私は経験している「メモリ不足」エラーをデバッグしようとしています。そのため、私の例を凝縮してヘルプを表示するために、ボタンをクリックしますdbを返し、すべての値をArrayListに戻します。次に、ArrayListを使用してRecyclerViewを生成します。これは成功ですが、もう一度ボタンを押すと「メモリ不足」エラーが発生します。クエリは非常に大量のデータを返し、ログからはボタンを1回押すだけで、エミュレータで実行されているメモリはそれほど多くないことがわかります。私は、ログ内のこの行から、その結論に達した:Android sqliteカーソル - メモリ不足
com.wizzkidd.myapp E/dalvikvm-heap: Out of memory on a 152-byte allocation.
エラーが指している。先に説明したように、
com.wizzkidd.myapp D/dalvikvm: GC_FOR_ALLOC freed 1459K, 2% free 91444K/93016K, paused 40ms, total 40ms
と、ボタンの第2のプレスは、このエラーが発生します私のデータベースのヘルパークラス、具体的には、このコードセクション:
public List<MyInfo> getAllFromDb() {
List<MyInfo> myArrayList= new ArrayList<MyInfo>();
String selectQuery = "SELECT * FROM myTable";
SQLiteDatabase sqLiteDatabase = this.getReadableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery(selectQuery, null);
try {
if (cursor.moveToFirst()) {
do {
MyInfo myInfo = new MyInfo();
myInfo.setTitle(cursor.getString(0));
myInfo.setDescription(cursor.getString(1));
myArrayList.add(myInfo);
} while (cursor.moveToNext());
}
} catch (Exception e) {
Log.d(TAG, "Error while trying to get data from database");
} finally {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
}
return tvGuideInfoList;
}
私は研究しているprここではあえて記事を読んで、答えの大部分はカーソルがfinallyブロックで閉じなければならないと言っています。しかし、上記のように、私はすでにこれをやっています。
myTableにはいくつのレコードがありますか? – developer
'myTable'にはいくつのレコードがありますか?彼らはブロブを含んでいますか?また、 'myArrayList.add(MyInfo);'は間違っています( 'myInfo'オブジェクトではなくクラスを追加しています)。 – pathfinderelite
@pathfinderelite私はタイプを作った、私は私の投稿を編集しました。 – WizzKidd