Ich Modifizieren derzeit stark/eine Android-App Umschreiben und ich habe eine sehr gelegentlichen Abstürzen führte entlang der folgenden Zeilen zu sehen: ein CursorAdapter
Methode, ruft AbstractWindowedCursor#checkPosition()
, und heißt:Was kann StaleDataException anders als vorzeitig cursor.close() aufrufen?
02-20 15:03:18.180 E/AndroidRuntime(17143): android.database.StaleDataException: Attempting to access a closed CursorWindow.Most probable cause: cursor is deactivated prior to calling this method.
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:139)
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:74)
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.database.CursorWrapper.getLong(CursorWrapper.java:106)
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.widget.CursorAdapter.getItemId(CursorAdapter.java:220)
Das Problem ist, wir schließe keine Cursor
s. Alle unsere Cursor
s kommen von CursorLoader
s und werden wiederum von einem ContentProvider
produziert. Wir sind die Cursor
in jedem entsprechenden CursorAdapter
vom LoaderCallbacks
vorbei, sind wir die Cursor
für Benachrichtigungen in der ContentProvider
Registrierung, wir anmelde die ContentResolver
von jedem insert(...)
, delete(...)
und update(...)
... kurz gesagt, ich kann nicht Finden Sie einen Grund, warum sich ein Cursor
schließen würde, während er benutzt wird.
Also: Was sind die andere Ursachen eines StaleDataException
?
Es ist schon eine Weile her, seit Sie gefragt, aber ... war da zufällig ein FilterQueryProvider beteiligt? –
Hey Andrew! Konnten Sie die Lösung herausfinden? – TheLittleNaruto