No se ha podido crear la ventana del cursor desde la carpeta

1 Cursor cursor = contentResolver.query(MY_URI, new String[] { "first" }, null, null, null); 2 if (cursor != null) { 3 if (cursor.moveToFirst()) { 4 first = cursor.getString(cursor.getColumnIndex("first")); 5 cursor.close(); 6 } 7 } 

Luego en la línea # 3 (de acuerdo con los registros), de vez en cuando me encuentro con esta excepción (extracto a continuación):

 android.database.CursorWindowAllocationException: Cursor window could not be created from binder. at android.database.CursorWindow.<init>(CursorWindow.java:134) at android.database.CursorWindow.<init>(CursorWindow.java:41) at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:709) at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:707) at android.database.CursorWindow.newFromParcel(CursorWindow.java:718) at android.database.BulkCursorProxy.getWindow(BulkCursorNative.java:196) 

¿Alguna idea de por qué está lanzando esta excepción? ¡Gracias!

Sospecho que el error puede estar relacionado con usted que no cierra sus cursores correctamente todo el tiempo. Tratar:

 1 Cursor cursor = contentResolver.query(MY_URI, new String[] { "first" }, null, null, null); 2 if (cursor != null) { 3 if (cursor.moveToFirst()) { 4 first = cursor.getString(cursor.getColumnIndex("first")); 5 } 6 cursor.close(); ///// Changed here 7 } 

El cursor siempre debe estar cerrado (independientemente de si está o no vacío). Asegúrese de que el resto de la aplicación también lo esté haciendo.

Pruebe de esta manera:

  if (cursor != null) { cursor.moveToFirst(); do { first = cursor.getString(cursor.getColumnIndex("first")); }while(cursor.moveToNext()); 

}

Prueba otro hilo

 new Thread(new Runnable(){ public void run(){ ...here all code }}); 

. Sin embargo, los códigos fuente de Android SDK parecen 4.0.2_r1

  130 private CursorWindow (origen de la parcela ) { 
131 mStartPos = fuente. ReadInt ();
132 mWindowPtr = nativeCreateFromParcel (fuente);
133 if (mWindowPtr == 0) {
134 throw new CursorWindowAllocationException ("La ventana del cursor no pudo ser"
135 + "creado de carpeta.");
136 }
137 mName = nativeGetName (mWindowPtr);
138 mCloseGuard.open ("close");
139 }

Donde mWIndowPtr es Int

  • ¿Qué hará un SQLiteCursor si una columna es nula?
  • ¿Cómo mantener la posición de ListView al usar las nuevas API de Loader?
  • ExpandableListView muestra el indicador para grupos sin hijos
  • RequestFocus no funciona correctamente para EditText
  • Panal y cursores (frustrado)
  • Necesita ayuda para leer de la base de datos SQLite para Android
  • Cursor Wrapping / Unwrapping en ContentProvider
  • Android - ¿Cómo conseguir una posición en bindView como en getView?
  • Establecer la posición del cursor de edición de texto en función de la posición de toque del usuario Android
  • ¿Hay alguna manera de establecer la posición del cursor en EditText de izquierda a derecha 2dp
  • Ventana del cursor: la ventana está llena
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.