Proveedor de contenido de Android para SQLite DB local: ¿por qué?
Soy bastante nuevo en el desarrollo de Android, pero tengo problemas para rodear a los Proveedores de contenido y específicamente cuáles son los beneficios (si los hay) para crear uno para una fuente de datos SQLite de una sola aplicación y un solo DB. Puedo ver que si quiero usar un adaptador de sincronización, necesito un proveedor de contenido, pero sinceramente la API de sincronización es tan poco asequible que no creo que haya ninguna ventaja sobre rodar mi propio proceso de sincronización remota utilizando REST.
También veo que al implementar un proveedor de contenido en mi base de datos SQLite, obtengo un singleton garantizado administrado por Android, pero estoy usando AndroidAnnotations que puede hacer singleton administración para mí y no parece de lo que he leído que es Incluso necesariamente se recomienda tener un ayudante de singleton DB, siempre y cuando gestionar mis conexiones abiertas correctamente.
- Android: ¿Cómo importar el contacto desde el teléfono?
- Android SQLite COMO comodín de escape
- Android Studio vs idioma ruso
- Cómo comprobar la tabla Existen o no en Suger ORM Android
- ¿Cómo arreglar el proveedor de contenido url no se encuentra en android Proveedor de contenido?
¿Me estoy perdiendo de algo? El Content Provider API parece sorprendentemente bajo y propenso a errores para una sola aplicación de DB. Gestionar específicamente las asignaciones URI "a mano" e introducir esa extraña capa de abstracción parece que no agrega mucho valor.
Entonces, ¿hay valor en los proveedores de contenido para SQLite DB local? Y si es así, ¿hay algún marco por ahí que va a generar mis asignaciones URI para mí o es estrictamente rodar su propia?
- IllegalStateException: base de datos ya cerrada (con ViewPager)
- Configuración de Proguard para enlaces sqlite android
- Android: Bulk Insert, cuando InsertHelper está obsoleto
- Consulta de suma en sqlite en android
- Almacenamiento de bases de datos SQLite con Android y Phonegap
- Cómo especificar el orden de clasificación de la consulta a un proveedor de contenido
- Android busca base de datos SQLite en el teléfono
- ¿Ordenar fechas en la base de datos sqlite?
En primer lugar, la API de sincronización hace mucho más que simplemente cargar datos desde su servidor. Controla el procesamiento por lotes de las actualizaciones de sincronización con sincronizaciones de otras aplicaciones en todo el sistema, asegura la conectividad antes de ejecutarse y optimiza la duración de la batería en todo el sistema (como se explica al ejecutar los Adaptadores de sincronización periódicamente y en la transferencia de datos mediante la guía de adaptadores de sincronización ).
En segundo lugar, el uso de un proveedor de contenido le permite aprovechar muy fácilmente el marco de Loaders (también disponible en la biblioteca de soporte) y CursorLoader, que permite que su interfaz de usuario se actualice automáticamente a medida que cambian los datos en el proveedor de contenido. Esto puede reducir considerablemente la cantidad de elementos necesarios en todas sus actividades.
Si la plantilla del Proveedor de contenido en sí es un problema, entonces ciertamente puede utilizar marcos de anotación como ProviGen para generar automáticamente la gran mayoría de un proveedor de contenido para usted.
También hay algunas funciones en Android que sólo se pueden hacer con la ayuda de un proveedor de contenido, incluyendo sugerencias de búsqueda personalizadas y compartir archivos privados de aplicación a otras aplicaciones (aunque la clase de FileProvider de ayuda que extiende ContentProvider es la mayor parte de lo que necesitaría para ese).
Las pruebas de interfaz de usuario pueden hacerse mucho más fáciles, así como también se puede utilizar el MockContentProvider proporcionado para simular conjuntos específicos de datos sin tener que cambiar el código de actividad (suponiendo que sólo se cargan datos del proveedor de contenido, por supuesto).
- Enviar datos a la actividad con FLAG_ACTIVITY_REORDER_TO_FRONT
- Eliminar elemento haciendo clic en cualquier elemento de listview