Может кто-нибудь объяснить мне это `StaleDataException`
Может кто-нибудь объяснить мне это StaleDataException
07-11 19:58:23.298 E/AndroidRuntime( 1044): Uncaught handler: thread main exiting due to uncaught exception
07-11 19:58:23.368 E/AndroidRuntime( 1044): android.database.StaleDataException: Access closed cursor
07-11 19:58:23.368 E/AndroidRuntime( 1044): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:217)
07-11 19:58:23.368 E/AndroidRuntime( 1044): at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:84)
07-11 19:58:23.368 E/AndroidRuntime( 1044): at android.database.CursorWrapper.getInt(CursorWrapper.java:128)
Когда и как нам нужно обеспечить указатель на курсоре, и почему происходит сбой с этим исключением?
4 ответа
Решение
Вы пытаетесь получить информацию из Cursor
это уже было закрыто. Вы должны проверить, закрыт ли курсор или нет, используя isClosed
метод.
Вы не можете закрыть курсор, пока CursorAdapter больше не нужен. Так что вы можете закрыть его в методе onDestroy():
@Override
public void onDestroy() {
super.onDestroy();
//Close the cursor
cursor.close();
//Close the database
database.close();
}
Использование Activity.getContentResolver.query()
вместо Activity.managedQuery()
, Так как managedQuery()
устарела. Меня устраивает.
В моем случае я закрывал курсор в методе onStop(). Оказалось, что поворот экрана заставлял этот код работать и, следовательно, вызывал исключение StaleDataException.