Tengo una aplicación que utiliza el cursor para seleccionar datos a través de rawQuery desde un db sqlite para llenar un ListView en Android ;. Cada vez que el usuario hace clic en un elemento de vista de lista, creo una nueva instancia de actividad para volver a llenar la vista de lista. ¿Es mejor llamar al cursor.close()
y al db.close()
para evitar problemas de memoria? De hecho tengo db.close()
en OnDestroy()
de mi actividad.Cuándo cerrar el cursor en Android?
Respuesta
Puede cerrar el cursor
una vez que haya recuperado los valores para ese objeto particular dentro de su método.
btw ... No tiene que volver a crear un listview
para un evento de clic de usuario. Simplemente notifique que hay algún cambio en los datos de su adaptador que se ha establecido en la vista de lista.
Algo así como
youradaptername.notifyDataSetChanged();
Esto debe repoblar contenidos dentro ur listview
automáticamente.
dónde agregar esta línea youradaptername.notifyDataSetChanged() ;? oncreate() o setitemclicklistener? – Metalhead1247
notifyDataSetChanged() debe llamarse en un punto en el que sepa que los datos en su adaptador han cambiado. Esto obligará a la vista de lista a volver a dibujar sus vistas, lo que a su vez lo ayudará a ver los datos nuevos en la lista. A dónde va a invocar notifyDataSetChanged() depende de su necesidad. Ejemplo refiérase a thispost http://stackoverflow.com/questions/16441298/android-call-notifydatasetchanged-from-asynctask – DeRagan
Bueno, si está creando una nueva instancia cada vez de la misma actividad (aunque no estoy seguro de que sea una buena práctica de programación). Puede cerrar el cursor tan pronto como haya terminado de recorrer/iterar a través del origen de la vista de lista.
Ejemplo:
una implementación de ejemplo sería algo así como
//Pre cursor code
startManagingCursor(cursor);
if (cursor.moveToFirst()) {
do {
if (cursor.getString(0).equals(value)) {
cursor.close();
a = true;
return a;
}
} while (cursor.moveToNext());
}
//Close cursor here, when its work is complete
cursor.close();
//Post cursor code ...
Siempre es una buena práctica ajustar su cursor.close() en una cláusula finally. De esta forma, se asegura de que el cursor esté cerrado, sin importar si se lanza una RuntimeException durante el procesamiento. – schnatterer
- 1. Android SQLite DB Cuándo cerrar
- 2. Desventajas de Android de no cerrar el cursor
- 3. Cómo cerrar el cursor en MongoKit
- 4. Idioma para cerrar un cursor
- 5. Cursor nulo en Android
- 6. ¿Cuándo deberíamos cerrar EntityManagerFactory?
- 7. Android cerrar el teclado
- 8. ¿Cuándo cerrar el cliente de WCF?
- 9. Android ¿cuándo debería abrir y cerrar conexiones de db?
- 10. Cuándo cerrar la declaración preparada
- 11. Android - ¿Se puede utilizar el cursor de SQLite después de cerrar la base de datos?
- 12. En Python con sqlite ¿es necesario cerrar un cursor?
- 13. ¿Cómo cerrar un cursor de retorno en PL/SQL?
- 14. Android Edittext cursor invisible
- 15. Cursor Android tamaño máximo
- 16. ¿Cuándo debería cerrar la conexión db?
- 17. ¿Cuándo no cerrar un archivo php?
- 18. Android spinner cerrar
- 19. Rellene el puntero desde el cursor en android
- 20. Android: ¿Cuándo se destruye el contexto OpenGL?
- 21. ¿Cuándo cambia el * Window focus * en Android?
- 22. ¿Puede alguien explicar Cursor en Android?
- 23. Obteniendo cadenas de un cursor en Android?
- 24. cursor de texto de Android en EditText
- 25. Android wake lock force cerrar
- 26. android, cursor devolviendo valor booleano?
- 27. Cerrar la aplicación al presionar el botón Atrás en Android
- 28. ¿Cómo cerrar otra aplicación en Android?
- 29. Cerrar la aplicación para Android
- 30. Mostrar un ícono "cerrar" al colocar el cursor sobre el elemento
tal vez esto podría ayudar a http://stackoverflow.com/questions/8532427/how-do-i-close-the -cursor-and-database-safe – Majid