El mejor lugar para cerrar la conexión de la base de datos

Buscaba un rato para la respuesta en mi pregunta pero no conseguí lo que necesité. Tengo una aplicación con un ListView, y el formulario donde puedo agregar nuevo registro a la base de datos. Así que no hay muchas preguntas que hacer.

¿Cómo manejar las conexiones a db? ¿Debo cerrarlo después de obtener lo que quiero o debo mantener abierto todo el tiempo hasta que se cierre la aplicación? Quiero saber cuál es la mejor manera mientras que pienso en el rendimiento y la duración de la batería.

De acuerdo con este post de un ingeniero de Google , no hay nada malo con dejar abierta la conexión de base de datos:

Android tomó una decisión de diseño deliberada que puede parecer sorprendente, simplemente renunciar a la idea de que las aplicaciones salen de forma limpia y, en su lugar, dejar que el núcleo limpie sus recursos. Después de todo, el núcleo debe ser capaz de hacer esto de todos modos. Dado que el diseño, mantener cualquier cosa abierta durante toda la duración de la vida de un proceso y nunca cerrarla simplemente no es una fuga. Se limpiará cuando se limpie el proceso.

Por lo tanto, para simplificar, extendería la clase Application para proporcionar un solo punto de entrada bien definido para su código, y abriría la conexión de base de datos en su onCreate() . Guarde la conexión de DB como un campo en su aplicación y proporcione un método de acceso para que la conexión esté disponible para el resto de su código.

Entonces, no se preocupe por cerrarlo.

Establecer la conexión a la base de datos es caro. Si las conexiones no son escasas y la base de datos es local, mantendría abierta la conexión en lugar de establecerla para cada operación de escritura en la base de datos, como lo haría típicamente en una aplicación cliente-servidor que necesita escalar a Un gran número de usuarios simultáneos.

En general, cerraría la conexión en la función onDestroy () de la actividad que abrió la conexión. Cierro () un cursor de una base de datos en la función que utiliza el cursor.

 public MyActivity extends Activity{ private myDatabase mDatabase; // myDatabase extends SQLiteOpenHelper private Cursor mCursor; public MyActivity(Context context){ super(context); initMemberVariables(); } public ElementButton(Context context, AttributeSet attrS){ super(context, attrS); initMemberVariables(); } public ElementButton(Context context, AttributeSet attrS, int defStyle){ super(context, attrS, defStyle); initMemberVariables(); } private void initMemberVariables(){ mDatabase = new PSEdb(this.getContext()); } private void getData(){ mCursor = mDatabase.MyGetterFunction(); while(mCursor.moveToNext()){ try{ // populate your data }catch(CursorIndexOutOfBoundsException ex){ // handle the exception } } mCursor.close(); } @Override public void onDestroy(){ super.onDestroy(); mDatabase.close(); } } 
  • Cómo crear tablas anidadas en la base de datos SQLite ?? (androide)
  • ¿Cómo puedo restablecer un número de secuencia autoincrement en sqlite
  • Android SQLite ON CONFLICT UPDATE es posible?
  • cómo crear base de datos una sola vez, a continuación, leer y escribir varias veces desde él, SQLite, OpenHelper, Android
  • ¿Cómo extender la clase SQLiteDatabase?
  • Búsqueda de Android: Utilice tablas de FTS junto con tablas normales de SQLite DB
  • Compartir base de datos SQLite entre 2 aplicaciones de Android?
  • Importar archivo .csv a Sqlite en Android
  • SQLiteException "no puede confirmar - ninguna transacción está activa" al insertar con CONFLICT_REPLACE
  • ¿Cuándo cerrar la conexión db en android? Cada vez que finaliza tu operación o después de salir de la aplicación
  • Android SQLiteConstraintException: código de error 19: error de restricción
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.