¿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.

  • Límites de la base de datos SQLite en Android
  • Eliminar fila de SQLite con cláusula where con cláusulas múltiples
  • Cómo crear carpeta privada en sdcard
  • Android, cómo ejecutar un archivo sql en sqlitedatabase
  • Ejemplo de Android SQLite
  • Citas simples en sqlite en android
  • Cómo obtener una fila específica donde se actualiza el valor en android
  • Cómo comparar representaciones de cadena de dobles si termina en .00
  • Android sqlite cómo comprobar si existe un registro
  • Cómo insertar marca de tiempo en una columna de base de datos SQLite? Utilizando el tiempo de función ('ahora')?
  • Android: ¿Cómo acceder a una sola base de datos de múltiples actividades en la aplicación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.