Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android.database.CursorWindowAllocationException al mover un Cursor

Estoy utilizando una base de datos SQLite y regularmente obtener errores de tiempo de ejecución no puedo encontrar el origen de. Después de una consulta, uso moveToFirst para apuntar en el primer registro recuperado y esto a veces desencadena una excepción android.database.CursorWindowAllocationException . Se agregó a esta excepción la siguiente oración: "La asignación de ventana de cursor de 2048kb falló. # Open Cursors = 736 (#cursors opendby this proc = 736)".

En la documentación de Android, todavía no he encontrado nada relacionado con esta excepción. ¿Alguien sabe que es causa y una forma de evitarlo?

  • Custom ListView con la fecha como SectionHeader (Custom SimpleCursorAdapter utilizado)
  • Cómo construir una consulta SQLite a GROUP by ORDER?
  • Android / java Sqlite: ¿Cómo recuperar la fecha máxima?
  • SQLiteDatabase.openDatabase vs SQLiteOpenHelper.getReadableDatabase
  • GetWritableDatabase () VS getReadableDatabase ()
  • Android: ORDER BY en la consulta
  • Android - ¿Cuáles son las buenas herramientas de informes para diseñar y generar informes desde SQLite Data Source?
  • ¿Cuál es el uso de SQLiteDatabase.CursorFactory en Android?
  • One Solution collect form web for “Android.database.CursorWindowAllocationException al mover un Cursor”

    Este error es casi siempre debido a no cerrar un cursor cuando ha terminado. Cada vez que abra un cursor, la memoria es necesaria para asignar los datos que representa el cursor y que la memoria no se puede liberar hasta que el cursor se cierra. Hay un límite en la cantidad de memoria disponible para este propósito, por lo que si los cursores no están cerrados y una aplicación continúa abriendo otros nuevos, es probable que este error ocurra en algún momento.

    Le recomiendo examinar su código para asegurarse de que todos los cursores creados se están cerrando en algún momento. También tenga cuidado con cualquier código que abra un cursor dentro de un bucle – su mensaje de error dice 'Cursores abiertos = 736' que sugiere una gran cantidad de actividad del cursor dentro de un bucle de algún tipo.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.