¿Cuándo cerrar la conexión de db en android? Cada vez que finaliza la operación o después de la salida de la aplicación

Tengo una aplicación de Android que accede a sqlite3 db local con frecuencia, para tener en cuenta el rendimiento, por lo que siempre mantengo la conexión abierta. Pero uno de mis amigos me recomendó que abriera / cerrara la conexión en cada operación.

1) ¿Cuál es la opinión de sus muchachos sobre estos dos métodos? contras Pros. 2) Hice algunas pruebas y descubrí que la conexión de DB no tiene demasiada información de rendimiento. ¿La sobrecarga de rendimiento de la conexión DB varía según el tamaño de la base de datos?

No conozco ninguna penalización de rendimiento en el cierre / apertura frecuente de la base de datos (independientemente de su tamaño). Creo que la respuesta a esta pregunta también depende del tipo de aplicación que está accediendo a la base de datos.

¿”Re-consulta” la base de datos mucho?
Entonces parece rectificado para mantenerlo abierto.

¿Busca datos diferentes cada vez que busca algo?
Una vez más, parece razonable dejarlo abierto (ya que en su lugar no ganarás en el almacenamiento en caché de los datos).

¿Hay otras aplicaciones accediendo a la misma base de datos?
Si existe un riesgo de problemas de concurrencia o locking, sería conveniente cerrar la base de datos después de terminar de leer / escribir desde / hacia ella.

En general, diría que es posible que gane más en los datos de almacenamiento en caché que dejando la base de datos abierta (y cerrándola) al optimizar el rendimiento.

Si está utilizando una base de datos en la memoria, sus datos serán descartados cuando cierre la conexión.

Quizá un poco de ventaja, pero me sorprendió.

La documentación dice que la conexión puede estar abierta todo el tiempo que la necesite. Y se puede cerrar en el método Destroy (). Enlace de documentación

Conexión de base de datos persistente:

Dado que getWritableDatabase () y getReadableDatabase () son caros de llamar cuando la base de datos está cerrada, debe dejar la conexión de la base de datos abierta todo el tiempo que sea necesario para acceder a ella. Normalmente, es óptimo cerrar la base de datos en el onDestroy () de la actividad de llamada.

@Override protected void onDestroy() { mDbHelper.close(); super.onDestroy(); } 

Como una adición, abrir y cerrar una conexión con tanta frecuencia podría causarle experimentar excepciones notorias de SQLite, si accede a db desde múltiples hilos.

Mira, si accedes a db desde varios subprocesos incluso a través de una sola conexión y como esas operaciones no son atómicas, entonces puedes intentar actualizar db que fue cerrado justo antes por otro subproceso.