Continuando con el tema de los componentes, en esta entrada vamos a ver:

Índice

Activando componentes

3 de los 4 tipos de componentes, actividades, servicios y emisor de notificaciones se activan mediante un mensaje asíncrono llamado intent(intento). Los intents enlazan componentes individuales el uno al otro en tiempo de ejecución (se puede pensar que son los mensajeros que solicitan una acción de otro componente), si el componente pertenece a tu aplicación o a otra.



Un intent se crea con un objeto Intent, el cual define un mensaje a activar, un componente específico o un tipo específico de componente; un intent puede ser explicito o implícito, respectivamente.

Para las actividades y los servicios, un intent define una acción a realizar (como “ver” o “mandar” algo) y puede especificar la URI de algún dato necesario (entre otras cosas que el componente que está siendo iniciado pueda necesitar). Por ejemplo, un intent puede solicitar que una actividad muestre una imagen o que abra una página web. En algunos casos, puede iniciar una actividad para recibir un resultado, en tal caso, la actividad devolverá también el resultado en un Intent (por ejemplo, se puede emitir un intent de dejar que el usuario elija un contacto y que se devuelva. El intent devuelto incluye un URI que apunta al contacto elegido.)

Para los emisores de notificaciones, el intent simplemente define la notificación a ser emitida (por ejemplo, una emisión para indicar que la batería está baja, solo incluye una cadena con el texto “barería baja”).

El otro tipo de componente, los proveedores de contenido, no se activan por intents. Se activan cuando una solicitud proviene de un ContentResolver. El contentResolver maneja todas las transacciones directamente con el proveedor de contenido, de modo que el componente que realiza la transacción con el proveedor no necesita el intent, en su lugar llama a métodos del objeto ContentResolver. Esto deja una capa de abstracción entre el proveedor de contenido y el componente de solicitud de información (por seguridad).

Hay distintos métodos para activar cada tipo de componente:

Para más información sobre el uso de intents, lee:Intents and Intent Filters. Más información sobre activar componentes específicos disponible en: Activities, Services, BroadcastReceiver and Content Providers.