Basado en mi experiencia pasada en Java, diría que es mejor cerrar la conexión, probablemente no importe en una pequeña aplicación de Android, pero si tiene 10 aplicaciones en ejecución y todas ellas acceden a la base de datos, tener 10 conexiones pendientes Comience un poco más y, tarde o temprano, otra aplicación tendrá que esperar porque el servidor SQL no puede manejar más solicitudes.
Supongo que podría considerarlo como un archivo en su computadora. Lees datos de él y luego lo cierras cuando terminas. ¿Por qué mantener un archivo abierto en su aplicación?
Ahora soy muy nuevo en la programación de Android, así que no he podido implementar las llamadas a la base de datos. Pero cuando me enfrenté al mismo problema en una aplicación Java hace unos años, implementé un objeto de base de datos, en el que tenía la conexión a la base de datos. "Todos los demás" (las clases) tuvieron que llamar al objeto de la base de datos (método único o final) para obtener datos, más o menos como los procedimientos almacenados, pero en la aplicación en su lugar.
Por esta razón, sabía cuándo se hicieron las llamadas y cuándo se detuvieron. Luego puse un tiempo de espera, así que como si nada sucediera en unos minutos, cerraría la conexión al DB. (Esto también solucionó algunas excepciones de tiempo de espera porque el tiempo de espera de la conexión nunca ocurriría). Cuando se ingresaba una nueva llamada, podía comenzar fácilmente una nueva conexión y usar la nueva conexión de db.
Básicamente abstraí las llamadas SQL al tener métodos como public Fungus[] getAllFungus()
y public Fungus[] getFilteredFungus(string where)
.
Si está implementando una base de datos en Android, debe usar 'SQLiteOpenHelper' o' ContentProvider' para administrar sus conexiones. Luego puede devolver 'Cursor' que le permite iterar sobre el conjunto de resultados, o colocarlo en una lista muy fácilmente. –