¿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.
- ListView Casilla de verificación Guardar estado
- Abra cualquier SQLiteDatabase como su / root
- SQLite SQLiteOpenHelper IllegalStateException - Error de DB ya cerrado
- ¿Cómo configurar el temporizador para llamar a una función cada n minutos?
- Importar archivo .sql en la base de datos sqlite
- Cómo podemos eliminar la clave extranjera en sqlite?
- Sincronizar SQLite DB en la aplicación android con el DB remoto de MySQL
- Close () nunca fue explícitamente llamado en Android y SQlite
- Utilizar CursorLoader para consultar la base de datos SQLite y rellenar AutoCompleteTextView
- Android obteniendo cadenas de la base de datos sqlite a autocompletetextview
- ¿Cómo puedo encontrar mi archivo de base de datos SQLite en mi computadora?
- Abrir y editar archivos PDF en la aplicación de Android con API
- Cómo deshabilitar el botón Borrar datos en Información de aplicación de la aplicación Administrar
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.
- ¿Compartiendo NavigationView con todas las actividades?
- Android Google Plus API – PeopleApi.loadConnected devuelve 0 personas