わかりました、データベース接続を閉じずに閉じると、奇妙なことが起こります。これがコードです。
boolean dbOpen = database.isOpen();
for (PlanModel plan : plans) {
dbOpen = database.isOpen();
Map<MessierObjectModel, NoteModel> planObjects = new HashMap<MessierObjectModel, NoteModel>();
query = "select astro_plan_entry_id, messier_catalog_id from astro_plan_entry where astro_plan_id = " + plan.getPlanId();
cursor = database.rawQuery(query, null);
dbOpen = database.isOpen();
if (cursor.getCount() > 0 && cursor.moveToFirst()) {
do {
NoteModel objectNote = getPlanObjectNote(cursor.getInt(0));
planObjects.put(getMessierObject(cursor.getInt(1)), objectNote);
} while (cursor.moveToNext());
}
plan.setPlanObjects(planObjects);
cursor.close();
}
close();
ループを最初に実行すると、データベースはずっと開いたままになります。ただし、dbOpen の 2 回目は false です。なぜこれが起こっているのかわかりません。データベースはクラス フィールドであり、close() メソッドが呼び出されるまで閉じられません。
編集:それはそれがcursor.moveToNext()から閉じているように見えます。または、少なくともwhileループの直後にチェックすると、閉じられます。まだどうなるかわかりませんが、少なくとも一歩前進です。