获取“由于连接池已关闭而无法执行此操作”

时间:2013-10-30 16:03:44

标签: java android sqlite

我已根据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的工作方式有关。

有人有任何想法吗?

0 个答案:

没有答案