studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android data-storage android-contentprovider

android - programacion - ¿Para qué sirven los proveedores de contenido privados?



manual de programacion android pdf (2)

  1. Programa automáticamente todo el acceso a la base de datos del lado del servidor y de sincronización en una cadena de fondo. Sin embargo, en la interfaz de la aplicación, Content Resolver / Provider normalmente ejecutará consultas / transacciones desde el hilo de UI por defecto. Debe realizar todas las transacciones de forma asincrónica (es decir, utilizando un CursorLoader ) para garantizar que su aplicación se ejecute sin problemas en el lado de la interfaz de usuario
  2. Localiza el acceso de DB reentrante desde cualquiera de los subprocesos que acceden a través de ContentProvider , de modo que todo bloqueo puede ocurrir completamente en su ContentProvider anulando llamadas, en lugar de seguirlo en una capa de DB, un servicio y una capa de UI.
  3. Como parte de lo anterior, también proporciona una buena interfaz única para sus datos: si tiene diez clases de actividad en su aplicación, solo tiene que realizar llamadas estáticas de ContentResolver desde cada una, en lugar de tener que lidiar con abrir / cerrar una base de datos SQLite en cada actividad mientras saltas de una actividad a otra en tu aplicación.
  4. ContentProvider está muy ligado al modelo SyncAdapter, lo que significa que es casi la única manera de hacerlo si desea mantener su base de datos sincronizada con una base de datos alojada en el servidor en la red. (su aplicación refleja un tipo de situación REST api)
  5. Se vincula con la interfaz ContentObserver de ContentResolver: esta es una interfaz donde (entre muchas otras cosas útiles) una vista puede registrarse como la observación de un conjunto específico de datos (a través del Cursor de esos datos). Luego, si conduce un cambio en ContentProvider, el CP puede notificar al CR, que a su vez puede notificar a los cursores relevantes, lo que a su vez volverá a consultar y hará que la vista se actualice. Esto es mucho más limpio que tener que realizar un seguimiento manual de sus vistas para que pueda invalidarlas y volver a dibujarlas.

En cuanto al bloqueo por reentrada del DB, no lo hace del todo, pero ayuda: su clase ContentProvider implementa cuatro funciones simples (interfaz CRUD) y, si elige anularlo, un quinto, batchAdd () - - Esto localiza tu bloqueo. La respuesta simple es simplemente etiquetar las cuatro / cinco de esas declaraciones de funciones "sincronizadas" en el nivel de función y listo. Mucho más limpio que tratar de descubrir el bloqueo de 20 lugares que acceden a tu base de datos en 5 actividades diferentes.

La guía de desarrollo de Android dice

Los proveedores de contenido también son útiles para leer y escribir datos que son privados para su aplicación y no se comparten.

En general, los proveedores de contenido se utilizan para proporcionar datos a diferentes aplicaciones o compartir datos entre ellos. Me preguntaba si es útil tener proveedores privados y no querer compartirlos. ¿Hay algún beneficio proporcionado que un acceso directo a la base de datos o al sistema de archivos no brinde?

Gracias, Rajath


Por ejemplo, un escenario de uso de aplicaciones de multiprocesos (como: el servicio de reproducción de música generalmente se ejecuta en un proceso remoto), entre los dos procesos que en una base de datos de aplicaciones compartidas debe usar ContentProvider privado.