2017-04-21 17 views
1

私は自動的にsqlbrite近いカーソルを天気をするために疑いを持っている、私は入れませんので、それはそれをしないようだ: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。あなたがquery.run()を呼び出して、あなたはそれを手動で閉じる必要がカーソルを取得している場合

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,() -> {}); 

答えて

1

編集ここ1

は近いエラーを私にカーソルを与えていないものの抜粋です。 mapToList/mapToOne APIを使用している場合は、手動で閉じる必要はありません。

+0

問題は、コードをsqlbriteに移行しているので、 'db.createQuery'を呼び出す前にローダーAPIを使用していたため、エラーが発生したという状態が発生しているようです。 – Necronet

+0

sqlitebriteのgithub問題の正式回答:https://github.com/square/sqlbrite/issues/94 – Necronet

関連する問題