SQLBrite 会自动关闭游标吗?
Does SQLBrite close cursor automatically?
我怀疑 sqlbrite 是否会自动关闭游标,似乎它并没有这样做,因为我不断得到:
java.lang.Throwable: Explicit termination method 'close' not called at
dalvik.system.CloseGuard.open(CloseGuard.java:180) at
android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:809)
at
android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:793)
但我在 docs 中没有看到任何说明我应该明确调用 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, () -> {});
如果您正在调用 query.run()
并获得一个光标,您需要手动将其关闭。如果您正在使用 mapToList
/mapToOne
api,则无需手动关闭它。
我怀疑 sqlbrite 是否会自动关闭游标,似乎它并没有这样做,因为我不断得到:
java.lang.Throwable: Explicit termination method 'close' not called at dalvik.system.CloseGuard.open(CloseGuard.java:180) at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:809) at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:793)
但我在 docs 中没有看到任何说明我应该明确调用 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, () -> {});
如果您正在调用 query.run()
并获得一个光标,您需要手动将其关闭。如果您正在使用 mapToList
/mapToOne
api,则无需手动关闭它。