¿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.
- La base de datos SQLite de Android se corrompe
- Insertar y seleccionar datos en árabe Android SQLite
- SQLite de Android - Cursor y ContentValues
- ¿Cómo configurar el temporizador para llamar a una función cada n minutos?
- Bases de datos de sincronización Mysql SQLite
- Acceda a la base de datos en una clase que no sea de actividad
- Recuperar una lista de todas las tablas de la base de datos
- Consulta SQLite que contiene caracteres especiales
- ¿Consulta para obtener registros basados en Radius en SQLite?
- Cómo evitar que se inserte valor duplicado en sqlite databse (si se duplican y luego se sobreescriben)
- "No hay un constructor por defecto disponible en android.database.sqlite.SQLitepenhelper" en Android Studio
- Acercamiento a las imágenes de Android en DB
- ¿Qué pasa con multithreading en Android SQLite?
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