android - studio - proveedor de contenido video
Cuándo usar un proveedor de contenido (8)
Entiendo que los proveedores de contenido están hechos para permitir el intercambio público de datos entre las aplicaciones. Sin embargo, me pregunto si alguien piensa en hacer que un proveedor de contenido lo use solo dentro de su propia aplicación. ¿Habría alguna ventaja al hacer esto? Cualquier desventaja?
En el pasado acabo de implementar SQliteOpenHelper para acceder a los datos de mi base de datos, pero estoy considerando crear un proveedor de contenido. Siento que el enfoque URI para solicitar datos es claro y conciso. Por otro lado, el uso de un proveedor de contenido solo para mi aplicación será redundante (ya que dentro de él tendré una clase SQliteOpenHelper) y más trabajo del que necesito.
Acepto que los ContentProviders son un poco difíciles de comprender, pero definitivamente son útiles, incluso si desea usarlos internamente para su propia aplicación. Lo mejor de todo es que puede personalizar los proveedores de contenido para los URI adecuados.
Aquí hay un escenario en el que puede tener 5 tablas en su base de datos, pero debe unir algunas de ellas en ciertos pedidos antes de usarlas. Y crea un URI de contenido para cada una de estas uniones. Entonces cada uno puede usar estos URI como una tabla :)
Le sugiero que continúe con el Proveedor de contenido, se sorprenderá al ver lo poderoso que es.
Como se dice en la documentación: developer.android.com/guide/topics/providers/…
No necesita un proveedor para usar una base de datos SQLite si el uso está completamente dentro de su propia aplicación.
Entonces, ¿por qué molestarse en desarrollar esta sobrecarga? ¿Quieres un desarrollo más fácil y rápido, verdad? Entonces, una capa de abstracción (SQLiteOpenHelper descenddent) es suficiente.
Mira la Navaja de Occam No hagas una entidad sin una buena razón.
Desde mi punto de vista, el proveedor de contenido ofrece muchas ventajas, solo permite compartir datos con otras aplicaciones. Si necesita sincronizar con el servidor utilizando un Sync-Adapter, use la mensajería de google en la nube, actualice automáticamente la interfaz de usuario cuando los datos subyacentes en la base de datos cambien usando cargadores, implemente búsquedas, use widgets ... entonces el proveedor de contenido es para usted.
Prefiero que sigas las instrucciones porque es posible que algún día necesites implementar algunas de las funciones anteriores adjuntas al proveedor de contenido.
Por cierto, puede construir rápidamente su base de datos y CP en menos de 5 minutos usando el generador de proveedor de contenido
Eche un vistazo al MOTODEV Studio for Eclipse. Es un entorno de desarrollo que amplía Eclipse. Tienen una herramienta donde puedes generar automáticamente un proveedor de contenido para una base de datos. Si un proveedor de contenido facilita el acceso a sus datos y no tiene un impacto significativo en el rendimiento, siga adelante y úselo. En la mayoría de los escenarios, este será el caso.
En resumen, los Content Providers
ayudan a administrar sus datos de manera efectiva . Sugeriría usarlos por las siguientes razones.
- Actúa como una capa de abstracción entre su UI y su base de datos . Puede implementar la validación de datos en ContentProviders para validar los datos ingresados por el usuario. También le permite modificar la estructura de la base de datos sin tocar la interfaz de usuario y otras partes.
- Ellos juegan muy bien con otras clases de Android Framework como
SyncAdapter
. Por ejemplo, puede actualizar automáticamente una lista, cuando un valor en una base de datos cambia usando ContentProviders junto conCursorLoader
. Sin ContentProviders debe implementar muchas funcionalidades como estas por su cuenta. - Podemos exponer de forma segura nuestros datos privados a otras aplicaciones . El uso de ContentProviders nos permitirá compartir nuestros datos de manera fácil y segura con otras aplicaciones.
Entonces, incluso si no necesita ninguna de estas funcionalidades ahora, puede necesitarlas en el futuro y es bueno hacer un esfuerzo adicional e implementarlas ahora mismo.
No use el proveedor de contenido si no desea compartir datos con otras aplicaciones. Use una base de datos sqlite simple para realizar operaciones de bases de datos. Tenga cuidado al usar proveedores de contenido para almacenar datos confidenciales porque otras aplicaciones pueden acceder a su información confidencial
Si no planea compartir datos, no piense en los proveedores de contenido. Son poderosos pero difíciles de escribir y será tonto implementarlos si los va a usar internamente.
Sin embargo, me pregunto si alguien piensa en hacer que un proveedor de contenido lo use solo dentro de su propia aplicación.
Por supuesto ... por ejemplo, para una vieja aplicación de listas TODO que escribí, tuve que escribir un proveedor de contenido para permitir que otras aplicaciones recuperen y accedan a los estados de las tareas. Era parte de los requisitos, pero más que eso tenía sentido e hizo la aplicación más agradable.
Yo diría que definitivamente es una buena idea usar un ContentProvider
incluso si no tiene la intención de hacerlo público.
Es una buena práctica proporcionar un nivel extra de abstracción sobre sus datos para facilitar el cambio interno. ¿Qué sucede si decide cambiar la estructura de la base de datos subyacente en un momento posterior? Si usa un ContentProvider
puede contener todos los cambios estructurales dentro de él, donde si no usa uno, se ve obligado a cambiar todas las áreas del código que se ven afectadas por los cambios estructurales. Además, es bueno poder reutilizar la misma API estándar para acceder a los datos en lugar de ensuciar el código con acceso de bajo nivel a la base de datos.
Además, siempre existe la posibilidad de que desee exponer sus datos en el futuro. Si no utiliza un ContentProvider
por adelantado, será mucho más difícil actualizarlo en una fecha posterior.
Luego, están las otras partes de Android donde los requisitos de ContentProvider
son obligatorios / recomendados, como cuando se usa SyncAdapter
y si se desea un widget de aplicación que implique acceso a datos, por ejemplo.
En resumen, hay muy poca información general involucrada al escribir un ContentProvider
por adelantado (una vez que haya aprendido la API, que es una buena idea), por lo que tiene sentido hacerlo, incluso para datos privados.