2010-07-12 13 views
5

Puede alguien explicarme este StaleDataExceptionPuede alguien explicarme esta `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) 

Cuándo y cómo necesitamos para asegurar una requiry en el cursor, y por qué se produce este Excepción?

Respuesta

4

Está intentando recuperar información de Cursor que ya ha estado cerrada. Debe verificar si el cursor está cerrado o no usando el método isClosed.

+0

¿Puede por favor sugerirme una forma decente de solucionar este problema? Actualmente recibo un montón de staleDataException que no pude solucionar :( – Bytecode

1

No puede cerrar el cursor hasta que CursorAdapter ya no sea necesario. Así que se puede cerrar en OnDestroy() Método:

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

    //Close the cursor 
    cursor.close(); 
    //Close the database 
    database.close(); 
    } 
0

En mi caso, yo estaba cerrando el cursor en el método onStop(). Resultó que la rotación de la pantalla causaba la ejecución de este código y, por lo tanto, daba StaleDataException.

0

Use Activity.getContentResolver.query() en lugar de Activity.managedQuery(). Porque managedQuery() está en desuso. Esto funciona para mi.

Cuestiones relacionadas