- sintaxis:
<service android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:foregroundServiceType=["camera" | "connectedDevice" | "dataSync" | "health" | "location" | "mediaPlayback" | "mediaProjection" | "microphone" | "phoneCall" | "remoteMessaging" | "shortService" | "specialUse" | "systemExempted"] android:icon="drawable resource" android:isolatedProcess=["true" | "false"] android:label="string resource" android:name="string" android:permission="string" android:process="string" > ... </service>
- se incluye 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 ve los elementos que no se declararon y nunca los ejecuta.Nota: En Android 8.0 (nivel de API 26) y versiones posteriores, el sistema limita lo que tu app puede hacer mientras se ejecuta en segundo plano. Para obtener más información, consulta las guías en las que se analizan los límites de ejecución en segundo plano y los límites de ubicación en segundo plano.
- atributos:
android:description
- Es una cadena legible por el usuario que describe el servicio. La descripción se establece como una referencia a un recurso de cadenas, de manera que pueda localizarse como otras cadenas de la interfaz de usuario.
android:directBootAware
Indica si el servicio reconoce el inicio directo, es decir, si puede ejecutarse antes de que el usuario desbloquee el dispositivo.
Nota: Durante el inicio directo, un proveedor de contenido de tu aplicación solo puede acceder a los datos que se almacenan en el almacenamiento protegido del dispositivo.
El valor predeterminado es
"false"
.android:enabled
- Indica si el sistema puede crear una instancia del servicio. Es
"true"
si es posible y"false"
si no lo es. El valor predeterminado es"true"
.El elemento
<application>
tiene su propio atributoenabled
, 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"
, el servicio se inhabilita y no se puede crear una instancia de este. android:exported
- Indica si los componentes de otras aplicaciones pueden invocar el servicio o interactuar con él. Es
"true"
si pueden y"false"
si no. 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 conocen 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 puedes usar un permiso para limitar las entidades externas que pueden interactuar con el 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
- Es un ícono que representa el servicio. Este atributo se establece como referencia a un recurso de elementos de diseño que contiene la definición de la imagen.
Si no está configurado, en su lugar se usa 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 con el elemento
<application>
) también es el predeterminado de todos los filtros de intents del servicio. Consulta el atributoicon
del elemento<intent-filter>
. android:isolatedProcess
- Si se establece en
"true"
, este servicio se ejecuta en un proceso especial que está aislado del resto del sistema y no tiene permisos propios. La única comunicación con este se establece mediante la API de Service, con inicio y vinculación. android:label
- Es un nombre legible por el usuario para el servicio.
Si no se establece este atributo, en su lugar se usa la etiqueta configurada 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 predeterminada de todos los filtros de intents del servicio. Consulta el atributolabel
del elemento<intent-filter>
.La etiqueta se establece como una referencia a un recurso de cadenas, de manera que pueda localizarse como otras cadenas de la interfaz de usuario. Sin embargo, para tu conveniencia durante el desarrollo de la aplicación, también se puede establecer como cadena sin procesar.
android:name
- Es el nombre de la subclase
Service
que implementa el servicio. Este es 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 (como en".RoomService"
), se agregará al nombre del paquete especificado en el elemento<manifest>
.Una vez que publiques tu aplicación, no cambies este nombre, a menos que configures
android:exported="false"
.No hay ningún valor predeterminado. Se debe especificar el nombre.
android:permission
- Es el nombre de un permiso que necesita una entidad para lanzar el servicio o vincularse con él. Si un llamador de
startService()
,bindService()
ostopService()
no recibe este permiso, el método no funciona y el objetoIntent
no se entrega al servicio.Si no se establece este atributo, se usará el permiso establecido por el atributo
permission
del elemento<application>
en el servicio. Si no se establece ninguno de los atributos, el servicio no estará protegido por un permiso.Para obtener más información sobre los permisos, consulta la sección Permisos en la descripción general del manifiesto de la app y los Lineamientos de seguridad.
android:process
- Es el nombre del proceso donde se ejecuta el servicio. Por lo general, todos los componentes de una aplicación se ejecutan en un proceso predeterminado que se crea para la aplicación. Tiene el mismo nombre que el paquete de la aplicación. El atributo
process
del elemento<application>
puede establecer un valor predeterminado diferente para todos los componentes. Sin embargo, un componente puede anular el valor predeterminado con su propio atributoprocess
, lo que te permite repartir tu aplicación entre varios procesos.Si el nombre asignado a este atributo comienza con dos puntos (
:
), cuando es necesario, se crea un nuevo proceso, que es privado para la aplicación, y el servicio se ejecuta en ese proceso.Si el nombre del proceso comienza con un carácter en minúscula, el servicio se ejecutará en un proceso global con ese nombre siempre que tenga permiso para hacerlo. Esto permite que los componentes de diferentes aplicaciones compartan un mismo proceso y reduzcan de esa forma el uso de recursos.
- consulta también:
<application>
<activity>
- primera inclusión:
- Nivel de API 1
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2024-02-16 (UTC)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Falta la información que necesito"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Muy complicado o demasiados pasos"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Desactualizado"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema de traducción"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema con las muestras o los códigos"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Otro"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Fácil de comprender"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Resolvió mi problema"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Otro"
}]
{
"last_modified": "Última actualización: 2024-02-16 (UTC)",
"state": ""
}