android sqlite3 cursor android-loadermanager android-cursorloader

android - ¿Cuál es el propósito de startManagingCursor?



sqlite3 android-loadermanager (1)

De acuerdo, la documentación indica que permite que la Actividad administre el ciclo de vida del cursor. Pero realmente no veo el punto de la misma, ya que cuando se destruye la actividad, cualquier referencia al cursor recién creado también debe borrarse y luego se deja que el cursor perezca en el próximo ciclo de recolección de basura. ¿Entonces, para qué molestarse?


No debe confiar en que los cursores sean destruidos por el recolector de basura ... un cursor representa una cantidad significativa de recursos: todos los datos que contiene el cursor, más la conexión al proveedor de contenido que posee el cursor, lo que también significa que es necesario El proceso se guardará en la memoria.

En las versiones más recientes de Android, los mensajes de registro se imprimen si el finalizador de un cursor se ejecuta sin estar explícitamente cerrado, porque es importante que las aplicaciones cierren los cursores cuando terminen con ellos.

Los cursores administrados se encargan de cerrar el cursor cuando se destruye la actividad, pero también hacen más que eso: se desactivarán y se volverán necesarios cuando se detengan y reinicien las actividades.

Dicho esto, en este punto debe considerar que los cursores administrados están en desuso. La nueva API de Loader es mucho mejor y tiene muchas mejoras en la experiencia de usuario de su aplicación; garantiza que todas las operaciones del cursor se realicen fuera del hilo principal (para que no haya problemas técnicos en las interacciones y animaciones de su interfaz de usuario), y puede propagar los datos del cursor existentes en las instancias de actividad cuando se reinicia una actividad debido a un cambio de configuración en lugar de tener que volver a cargar los datos.

Si necesita ejecutar versiones de Android más antiguas que 3.0, puede usar la implementación del cargador de la versión v4 de Loader para esas aplicaciones.