我已根据this Vogella tutorial创建了多个数据访问对象,但我遇到了其中一个问题。当应用程序恢复时,我会对它运行一些查询,我偶尔会在标题中看到错误。具体来说,我运行以下三种形式的方法:
public List<Event> getPendingEvents() {
openReadable();
List<Event> events = new ArrayList<Event>();
Cursor cursor = localDb.query(EventTable.TABLE_EVENT,
allColumns, allColumns[8] + " = ?", new String[] {"pending"}, null, null, null);
cursor.moveToFirst(); // crash here: Cannot perform this operation because the connection pool has been closed.
while (!cursor.isAfterLast()) {
events.add(cursorToEvent(cursor));
cursor.moveToNext();
}
cursor.close();
return events;
}
然后我在全部运行后关闭数据库连接。为什么查询后连接池会关闭?我在努力想出一个理由。它能以某种方式与数据库文件的大小相关吗?这些表格具体而且总是非常小(<50条记录),但其他表格是否会产生影响?我唯一的另一个想法是它与onResume的工作方式有关。
有人有任何想法吗?