El tutor de nuestro curso online de Desarrollo de Aplicaciones para Android, Víctor Ramírez Las,…
Qué es un Content Provider y su ciclo de vida
1.
Qué es un Content Provider y su ciclo de vida
Comenzamos dos serie de tutoriales sobre Content Providers, un mecanismo proporcionado por Android que nos permite compartir información entre diferentes aplicaciones.
En esta primera serie, veremos en qué consisten, su ciclo de vida y describiremos los elementos que intervienen en el acceso a los Content Providers que proporciona Android, centrándonos principalmente en los modelos de datos asociados al registro de llamadas, agenda de contactos y sistema de almacenamiento de mensajes de texto, dejando para la segunda serie, la creación de Content Providers personalizados.
Definición de Content Provider y usos más habituales
Un Content Provider es el mecanismo que implementa Android, para compartir datos entre aplicaciones (no existe área común de datos ya que cada aplicación almacena los datos por separado). Este mecanismo permite desacoplar la capa de aplicación de la capa de datos.
Uno de los ejemplos más habituales es compartir el acceso a la información contenida dentro de una base de datos SQLite, implementada dentro de una aplicación, ya que ésta inicialmente es privada y sólo accesible por la propia aplicación.
Imagen: Content Provider en la estructura del Sistema Android (imagen elaborada a partir de «Anatomy Physiology of an Android» by Smieh [CC BY-SA 3.0], via Wikimedia Commons
Android nos proporciona una serie de Content Providers ya existentes, que nos permiten acceder a diferentes datos de nuestro dispositivo:
- Browser: Posibilita la lectura o modificación de bookmarks (marcadores), historial de navegación o búsquedas realizadas.
- CallLog: Permite el acceso al registro de llamadas, para tanto visualizar el historial como poder modificarlo (llamadas entrantes y salientes).
- Settings: Proporciona acceso a las preferencias del dispositivo.
- MediaStore: Acceso a los recursos multimedia del dispositivo (imágenes, audio, vídeo etc.).
- Contacts: Permite el acceso a la lista de contactos, tanto para leer, modificar o guardar nuevos contactos.
Ejemplos:
- URI definida en SDK Android:
12345Contacts.People.CONTENT_URIMediaStore.Images.Media.INTERNAL_CONTENT_URIMediaStore.Images.Media.EXTERNAL_CONTENT_URISettings.System.DEFAULT_NOTIFICATION_URI - Equivalencia URI:
12345content://contacts/peoplecontent://media/internal/imagescontent://media/external/imagescontent://settings/system
Ciclo de vida de un Content Provider
Describimos los elementos que intervienen en el ciclo de vida de un Content Provider que podemos resumir en las siguientes tres etapas:
- Se inicializa por primera vez cuando el método onCreate() es invocado (es activado por un ContentResolver). Este método trabaja en el UI Thread o hilo principal de ejecución de la aplicación, por lo que no se recomienda realizar tareas costosas. Sirve principalmente para instanciar la base de datos utilizada en el Content Provider.
- Una vez inicializado, se pueden realizar tareas de insertar/actualizar/borrar/consultar un sistema de almacenamiento ( insert() , update(), delete() y query()), y una vez modificados los datos, las acciones de apertura y cierre se realizarán de manera automática. En el supuesto de realizar tareas de lectura, será necesario mantener la conexión a los datos abierta para no recibir el contenido del recolector de basura.
- Por último, una vez la aplicación cliente que consume los datos del Content Provider no se encuentra en memoria, pasará a un estado de destrucción.
Ejemplo gráfico ilustrativo del ciclo de vida de un Content Provider.
En la siguiente publicación veremos un Content Provider que proporciona Android para el acceso a los contactos almacenados en el dispositivo móvil.
Esta entrada tiene un comentario
Los comentarios están cerrados.
[…] tutoriales anteriores, ya presentamos a los Content Provider y trabajamos con varios ya definidos que proporciona Android. En esta nueva serie, vamos a ver […]