Исключение: попытка получить ссылку на закрытый SQLiteClosable

Я отправилэтот Еще в мае на [Android-разработчики] Google Group. Я никогда не слышал и не мог воспроизвести проблему, пока один из моих учеников не сделал на прошлой неделе. Я понял, что яЯ бы опубликовал это здесь и посмотрел, звонил ли он кому-нибудь.

В одном из моих примеров кода у меня есть следующий метод:

static Cursor getAll(SQLiteDatabase db, String orderBy) {
        return(db.rawQuery("SELECT * FROM restaurants "+orderBy, null));

}

Когда я запускаю его, время от времени я получаю это:

05-01 14:45:05.849: ERROR/AndroidRuntime(1145):
java.lang.IllegalStateException: attempt to acquire a reference on a
close SQLiteClosable
05-01 14:45:05.849: ERROR/AndroidRuntime(1145):     at
android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:31)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145):     at
android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:56)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145):     at
android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:49)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145):     at
android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:49)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145):     at
android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1118)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145):     at
android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1092)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145):     at
apt.tutorial.Restaurant.getAll(Restaurant.java:14)

Это не имеет смысла для меня. База данных определенно открыта.SQLiteClosable этоSQLiteQuery созданоSQLiteQueryDriverи я не вижу доказательств того, что здесь есть пул объектов или что-то, что могло бы объяснить, какновый» SQLiteClosable уже закрыт. Тот факт, что он является спорадическим (имеется в виду, что одни и те же операции пользовательского интерфейса иногда вызывают исключение, но не всегда), наводит на мысль о каком-то пуле, состоянии гонки или о чем-то ... но яЯ не уверен, где.

Мысли?

Спасибо!

ОБНОВИТЬ: Данный код взят из учебников LunchList из моегоРуководства по программированию на Android книга. Это'Это немного распространено и не очень подходит для публикации непосредственно в SO. Вы можете скачать код этой книги по приведенной выше ссылке, если хотите посмотреть на нее. Я не помню точно, над каким выпуском учебника в то время работал студент, хотя это было в диапазоне Tutorial 12-Tutorial 16. В основном я надеялся встретить кого-то, кто раньше сталкивался с этой проблемой и имел вероятного виновника. Я'Я уверен, что моя база данных открыта. Еще раз спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос