En una aplicación de Android, ¿debo tener un proveedor de contenido por tabla o sólo uno para toda la aplicación?

Tengo años de experiencia con el desarrollo de Microsoft .NET (principalmente C #) y he estado trabajando para llegar a la velocidad en Android y Java. Hasta ahora, he construido una pequeña aplicación con un par de pantallas y un proveedor de contenido de trabajo.

Todos los ejemplos que he visto para desarrollar proveedores de contenido suelen funcionar con una sola tabla, así que tengo la impresión de que ésta era la convención.

Construí un par de proveedores de contenido para otras tablas y me encontré con el "URI desconocido" IllegalArgumentException cuando intenté probarlos. La excepción está siendo lanzada por uno de mis proveedores de contenido, pero no el que tenía la intención de llamar.

Parece que mi aplicación está usando el primer proveedor de contenido en el archivo AndroidManifest.xml, que ahora me pregunta si debería tener un solo proveedor de contenido para toda la aplicación.

¿Existen mejores prácticas y / o ejemplos para trabajar con varias tablas en una aplicación de Android? ¿Debo tener un proveedor de contenido por tabla o sólo uno para toda la aplicación? Si el primero, ¿cómo puedo resolver URIs al proveedor adecuado? Si este último, ¿cómo puedo evitar que mi código de proveedor de contenido se contamine con declaraciones de conmutación?

El 99% de las aplicaciones de Android no necesitan proveedores de contenido.

Los proveedores de contenido tienen un uso principal: la comunicación entre procesos. Si usted es:

  • Esperando que otros desarrolladores accedan a sus proveedores de contenido, o
  • Se están integrando a Android en lugares que requieren un proveedor de contenido (por ejemplo, sugerencias de búsqueda para el cuadro de búsqueda rápida)

Entonces, y sólo entonces, implementa un proveedor de contenido.

De lo contrario, todo lo que está haciendo es añadir sobrecarga a su aplicación y hacer que su código sea más difícil de mantener.

Por lo tanto, si su aplicación es uno de los 99% que no necesita proveedores de contenido, sólo deshacerse de la que tiene y acceder a su contenido por otros medios (por ejemplo, SQLiteDatabase ).

Bueno, tengo que estar en desacuerdo con CommonsWare. Si desea evitar IllegalStateExceptions y otros problemas que necesita para utilizar Cursorloader. Ellos manejan múltiples cosas para usted y asegurarse de que los cursores son pulidos. Por lo tanto, necesita proveedores de contenido. La pregunta inicial no es contestada todavía pensamiento. No sé cuál es la mejor práctica para el número o los proveedores de contenido y tablas. Pero dentro del método .query comprueba el ID URI. Usted puede probar si el uri id tiene un valor específico y construir su consulta de esa manera.

  • JNI: Del código C a Java y JNI
  • ¿Cómo puedo definir el diseño de un fragmento desde XML?
  • Lectura de transacciones no confirmadas en Android
  • Obtener un actor por nombre en libgdx
  • Android deshabilita la visualización mientras se carga
  • Android Studio preDexDebug después de agregar jar archivo
  • No se puede eliminar el archivo de almacenamiento externo en android mediante programación
  • Forma de recortar la imagen cuadrada de Android en la aplicación
  • IllegalArgumentException que bloquea la superficie
  • AdMob no puede mostrar anuncios debido a configChanges
  • Cómo cargar sprite hoja con 5 filas y 5 columnas vista superior en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.