<service>

sintaxis:
<service android:description="string resource"
         android:directBootAware=["true" | "false"]
         android:enabled=["true" | "false"]
         android:exported=["true" | "false"]
         android:foregroundServiceType=["connectedDevice" | "dataSync" |
                                        "location" | "mediaPlayback" | "mediaProjection" |
                                        "phoneCall"]
         android:icon="drawable resource"
         android:isolatedProcess=["true" | "false"]
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string" >
    . . .
</service>
contenido en:
<application>
puede contener:
<intent-filter>
<meta-data>
descripción:
Declara un servicio (una subclase Service) como uno de los componentes de la aplicación. A diferencia de las actividades, los servicios no cuentan con una interfaz de usuario visual. Permiten implementar operaciones de ejecución prolongada en segundo plano o una API de comunicaciones enriquecida a la que pueden llamar las otras aplicaciones.

Todos los servicios deben estar representados por elementos <service> en el archivo de manifiesto. El sistema no verá los servicios que no estén declarados en el archivo, los cuales nunca se ejecutarán.

atributos:
android:description
Es una string que describe el servicio a los usuarios. La etiqueta se debe establecer como una referencia a un recurso de una string para que se pueda localizar como otras strings en la interfaz de usuario.
android:directBootAware

Si el servicio reconoce el arranque directo o no, es decir, si puede ejecutarse o no antes de que el usuario desbloquee el dispositivo.

Nota: Durante el arranque directo, un servicio de tu aplicación solamente puede acceder a los datos almacenados en el área de almacenamiento protegida por el dispositivo.

El valor predeterminado es "false".

android:enabled
Define si el sistema puede crear una instancia del servicio ("true" si es posible y "false" si no lo es). El valor predeterminado es "true".

El elemento <application> tiene su propio atributo enabled, que sirve para todos los componentes de la aplicación, incluidos los servicios. Los atributos <application> y <service> deben ser "true" (el valor predeterminado de ambos) para que el servicio pueda habilitarse. Si alguno es "false", se inhabilita el servicio y no es posible crear una instancia de este.

android:exported
Si los componentes de otras aplicaciones pueden, o no, invocar el servicio o interactuar con él ("true" si pueden y "false" si no pueden). Cuando el valor es "false", solo los componentes de la misma aplicación o las aplicaciones con el mismo ID de usuario pueden iniciar el servicio o vincularse con él.

El valor predeterminado variará de acuerdo con los filtros de intents que tenga el servicio. La ausencia de filtros significa que solo se puede invocar el servicio si se especifica el nombre exacto de la clase. Esto quiere decir que el servicio solo está destinado al uso interno de la aplicación (dado que otras entidades no conocerían el nombre de la clase). Por lo tanto, en este caso, el valor predeterminado es "false". Por otro lado, la presencia de al menos un filtro significa que el servicio está destinado al uso externo; en consecuencia, el valor predeterminado es "true".

Este atributo no es la única forma de limitar la exposición de un servicio ante otras aplicaciones. También es posible usar un permiso para limitar las entidades externas que pueden invocar al servicio (consulta el atributo permission).

android:foregroundServiceType

Especifica que se trata de un servicio en primer plano que satisface un caso de uso en particular. Por ejemplo, si el servicio en primer plano es del tipo "location", significa que una app está obteniendo la ubicación actual del dispositivo, generalmente para continuar una acción iniciada por el usuario relativa a la ubicación del dispositivo.

Puedes asignar varios tipos de servicio en primer plano a un servicio en particular.

android:icon
Un ícono que representa el servicio. Se debe establecer este atributo como una referencia a un recurso de elemento de diseño que contenga la definición de la imagen. Si no se establece, se usa en su lugar el ícono especificado para toda la aplicación (consulta el atributo icon del elemento <application>).

El ícono del servicio (el que se establece aquí o mediante el elemento <application>) también es el ícono predeterminado de todos los filtros de intents del servicio (consulta el atributo icon del elemento <intent-filter>).

android:isolatedProcess
Si se establece en true, el servicio se ejecutará en un proceso especial que está aislado del resto del sistema y no cuenta con permisos propios. La única comunicación con este se establece mediante la API de servicio (inicio y enlace).
android:label
Un nombre para el servicio que se puede mostrar a los usuarios. Si no se establece este atributo, se usa en su lugar la etiqueta definida para toda la aplicación (consulta el atributo label del elemento <application>).

La etiqueta del servicio (la que se establece aquí o mediante el elemento <application>) también es la etiqueta predeterminada de todos los filtros de intents del servicio (consulta el atributo label del elemento <intent-filter>).

La etiqueta se debe establecer como una referencia a un recurso de una string para que se pueda localizar como otras strings en la interfaz de usuario. Sin embargo, también se puede establecer como una string sin procesar para facilitar el desarrollo de la aplicación.

android:name
El nombre de la subclase Service que implementa el servicio. Debe ser un nombre de clase completamente calificado (como "com.example.project.RoomService"). Sin embargo, como atajo, si el primer carácter del nombre es un punto (por ejemplo, ".RoomService"), se agregará al nombre del paquete especificado en el elemento <manifest>.

Cuando publiques tu aplicación, no cambies este nombre (salvo que hayas establecido android:exported="false").

No hay ningún valor predeterminado. Se debe especificar el nombre.

android:permission
El nombre de un permiso que debe incluirse en una entidad para lanzar el servicio o vincularse con él. Si quien llama a startService(), bindService() o stopService() no tiene concedido este permiso, el método no funcionará y no se proporcionará el objeto intent al servicio.

Si no se establece este atributo, se aplicará al servicio el permiso establecido por el atributo permission del elemento <application>. Si no se establece ninguno de los atributos, el servicio no contará con la protección de un permiso.

Para obtener más información sobre los permisos, consulta la sección sobre permisos en la introducción y el documento separado sobre seguridad y permisos.

android:process
El nombre del proceso donde se va a ejecutar el servicio. En general, todos los componentes de una aplicación se ejecutan en el proceso predeterminado que se creó para la aplicación. Su nombre es el mismo que el del paquete de la aplicación. El atributo process del elemento <application> puede establecer otro valor predeterminado para todos los componentes. Sin embargo, el componente puede anular el valor predeterminado con su propio atributo process, lo cual permite extender la aplicación entre varios procesos.

Si el nombre asignado a este atributo comienza con dos puntos (":"), se crea un nuevo proceso privado de la aplicación cuando hace falta y se ejecuta el servicio en ese proceso. Si el nombre del proceso comienza con un carácter en minúscula, se ejecuta el servicio en un proceso global correspondiente a ese nombre, siempre y cuando tenga permiso para hacerlo. Esto permite que los componentes de diferentes aplicaciones compartan un proceso y disminuye el uso de recursos.

consulta también:
<application>
<activity>
presentado en:
Nivel de API 1