java - studio - loading android
Android: CursorLoader, LoaderManager, SQLite (2)
He escrito una entrada de blog sobre este tema. También puede consultar esta answer para obtener más información. Esperemos que te aclare las cosas.
Como mencionó Barak, uno puede implementar un CursorLoader
sin proveedores de contenido extendiendo la AsyncTaskLoader<Cursor>
. Dicho esto, la mayoría de los tutoriales y el código de muestra utilizan ContentProvider
s, y parece que el equipo de Android también recomienda su uso. También es mucho menos complicado que implementar tu propia clase.
Dicho esto, si realmente no quieres usar proveedores de contenido, Dianne Hackborn (uno de los desarrolladores del framework de Android, y también conocido como "hackbod" aquí en SO) sugiere escribir tu propio cargador que use tu clase de base de datos en lugar de un contenido. proveedor. La forma más sencilla es simplemente tomar el origen de la clase CursorLoader
de la biblioteca de compatibilidad y reemplazar las consultas de los proveedores por consultas a su propia clase de db helper.
Tratando de actualizar mi aplicación anterior en la que algunos métodos están en desuso. Descubrí que si quiero trabajar con ListView que muestra datos de db, debería usar LoaderManager + CursorLoader. CursorLoader trabaja con proveedores de contenido. Entonces, ¿para cada tabla en mi base de datos debería crear un proveedor de contenido ahora? Por qué debería ? Por lo que sé, los proveedores de contenido se utilizan para compartir información de db con otras aplicaciones, pero mi aplicación no comparte ninguna información. Entonces, ¿puedo usar CursorLoader sin proveedores de contenido?
Sí puede, puede tener cargadores de datos personalizados que pueden cargar objetos que defina o cualquier tipo de objeto o lista en esa materia.
Basta con mirar las muestras de Android sdk para LoaderCustomSupport.java en las muestras y demostraciones de la biblioteca de compatibilidad.