1

我怀疑 sqlbrite 是否会自动关闭光标,似乎它没有这样做,因为我不断得到:

java.lang.Throwable:在 android.database 的 android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:809) 的 dalvik.system.CloseGuard.open(CloseGuard.java:180) 未调用显式终止方法“关闭” .sqlite.SQLiteDatabase.open(SQLiteDatabase.java:793)

但我在文档中没有看到任何说明我应该明确调用cursor.close.

编辑 1

这是给我光标未关闭错误的片段:

DbProvider.db(getActivity()).createQuery(Item.NAME, sqlQuery, selectionArgs).mapToList(new Func1<Cursor, ItemEntity>() {
    @Override
    public ItemEntity call(Cursor cursor) {
        return new ItemEntity(cursor);
    }
}).subscribe(itemEntities -> {
    Debug.info(this, "items " + itemEntities );
}, Throwable::printStackTrace, () -> {});
4

1 回答 1

1

如果您正在调用query.run()并获取光标,则需要手动关闭它。如果您使用的是mapToList/ mapToOneapi,则无需手动关闭它。

于 2017-04-21T01:12:50.377 回答