¿Cómo funciona un cursor SQLite trabajar internamente?

Estoy trabajando en un proyecto que requiere almacenar mapas de bits en una tabla. Estos mapas de bits se utilizan en los adaptadores de datos que se muestran en las listas. Esta tabla puede contener más de 1000 imágenes. La razón por la que actualmente no estoy almacenando en el archivo es debido a lo rápido que puedo leer y escribir imágenes en db.

Lo que estoy buscando es entender las limitaciones del cursor de SQLite. ¿Cómo se carga el cursor en la memoria? ¿Coloca los resultados de la consulta en la memoria o crea algún tipo de archivo de lectura / escritura temporal? No quiero encontrar problemas en los que consultar un conjunto de datos grandes hace que un dispositivo se quede sin memoria.

Si lo recuerdo, mantendrá muchos resultados almacenados en memoria caché en la memoria. Debe permanecer por debajo del límite del montón suave , por lo general. Es un límite de asesoramiento, por lo que preferirá superar el límite que devolver SQL_NOMEM.

No creo que se escribe en el disco para los mecanismos de almacenamiento en caché. Siempre y cuando cada imagen puede caber en la memoria, y no están en los índices, no debería ser un problema.

No soy un programador androide, por lo que vale la pena. Algunas de estas cosas podrían haber sido personalizadas.

Como fondo, sqlite_step es el cursor en la biblioteca predeterminada. No sé si android ha implementado sus propios mecanismos. Puede encontrar información general sobre su página acerca de la asignación de memoria dinámica .

Este es un viejo post que hice. Mi solución fue guardar las imágenes en el archivo y guardar la ruta de la imagen en la tabla de la base de datos. Esto era más limpio y parecía mucho más rápido.

La idea de guardar grandes datos binarios en una tabla no parece lo correcto. No tengo información detallada de por qué no es una buena idea, pero eso es sólo lo que siento de un poco de investigación.

  • Error de Android escribiendo datos de ubicación en la base de datos SQLite de la clase LocationListener
  • Creación de restricciones de clave externa en ORMLite en SQLite
  • Acceso a la base de datos SQLite desde la línea de comandos
  • Almacenamiento y recuperación de datos no ingleses en la base de datos sqlite en android
  • ¿Cómo implementar deshacer un solo paso para los cambios en la base de datos SQLite?
  • ¿Por qué mi manejador de excepciones no interrumpe el error de inserción de Android SQLite?
  • Mantenga el elemento de lista highlite con SimpleCursorAdapter
  • Cómo reemplazar CursorAdapter bindView
  • ¿Por qué obtengo un error "sqlite3: not found" en un Nexus One enraizado cuando intento abrir una base de datos usando el shell de adb?
  • Android: niveles de aislamiento de transacciones SQLite (ORMLite)
  • ¿Cómo se comprueba si existe una tabla en una base de datos SQLite de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.