Me preguntaba si alguien podría darme una breve descripción de los cursores de Android. Un par de preguntas específicas:SQLiteDatabases and Cursors
1 - Tengo un método que devuelve un cursor después de una consulta de base de datos:
public static Cursor getVehicles()
{
SQLiteDatabase db = vehicleData.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, GET_VEHICLES_FROM_CLAUSE, null, null, null, null, ORDER_BY);
return cursor;
}
Con el fin de hacer la limpieza, probé db.close() justo antes de la sentencia de retorno . Sin embargo, esto provocó que el cursor devuelto no contenga filas. ¿Por qué es esto?
2 - ¿Cuál es la diferencia entre cerrar un cursor y cerrar una base de datos?
3 - ¿Debo llamar al Cursor si es una variable local, o puedo dejar que el recolector de basura lo limpie?
4 - Mi base de datos es pequeña y solo la utilizo mi aplicación. ¿Puedo mantenerla abierta?
Gracias Alibi. Con respecto a 4, ¿hay alguna manera de detectar cuándo termina la aplicación? – barry
Simplemente cierre el db cuando expiren sus actividades. Puedes usar el método onDestroy para eso. http://www.outofwhatbox.com/blog/2010/12/android-closing-those-database-objects/ – alibi
Debería ser onPause() - la documentación dice que no podemos confiar en onDestroy() que se llama. – barry