Skip to content

Qué es un Content Provider y su ciclo de vida

Content Provider en Android
1. Qué es un Content Provider y su ciclo de vida
2. Contacts Provider: acceso al repositorio de datos de contacto
3. Proyecto Android con Content Providers (I)
4. Proyecto Android con Content Providers (II)
5. SAF: framework para el acceso a almacenes de documentos
6. Videotutorial: Proyecto Android con Content Providers

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.

Estructura Sistema Android

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:
  • Equivalencia URI:

 

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.

Ciclo vida Content Provider
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.

Volver arriba
Esta web usa cookies para su correcto funcionamiento. No hay cookies de publicidad, aunque algunos de los contenidos mostrados (videos o documentos insertados) están alojados en servicios externos (Youtube, Vimeo, Box...) que sí pueden implementar sus propias cookies.    Más información
Privacidad