Может кто-нибудь объяснить мне это `StaleDataException` - PullRequest
5 голосов
/ 13 июля 2010

Может кто-нибудь объяснить мне это 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 ]

4 голосов
/ 13 июля 2010

Вы пытаетесь получить информацию из Cursor, который уже был закрыт. Вы должны убедиться, что курсор закрыт или нет, используя метод isClosed.

1 голос
/ 25 августа 2014

Вы не можете закрыть курсор, пока CursorAdapter больше не нужен.Таким образом, вы можете закрыть его в методе onDestroy ():

@Override
public void onDestroy() {
 super.onDestroy();

     //Close the cursor
     cursor.close();
     //Close the database
     database.close();
    }
0 голосов
/ 24 марта 2017

Используйте Activity.getContentResolver.query() вместо Activity.managedQuery(). Потому что managedQuery() устарела. У меня это работает.

0 голосов
/ 04 мая 2016

В моем случае я закрывал курсор в методе onStop ().Оказалось, что поворот экрана заставлял этот код работать и, следовательно, вызывал исключение StaleDataException.

...