- Sintaxe:
<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>
- contido em:
<application>
- pode conter:
<intent-filter>
<meta-data>
- descrição:
- Declara um serviço, uma subclasse
Service
, como um dos componentes do aplicativo. Diferente das atividades, os serviços não possuem uma interface visual do usuário. Eles são usados para implementar operações de longa execução em segundo plano ou uma API de comunicação avançada que pode ser chamada por outros aplicativos.Todos os serviços precisam ser representados por elementos
<service>
no arquivo de manifesto. Aqueles que não forem declarados não serão vistos pelo sistema e não serão executados.Observação: no Android 8.0 (nível 26 da API) e mais recentes, o sistema limita o que o app pode fazer enquanto está sendo executado em segundo plano. Para mais informações, consulte os guias sobre limites de execução em segundo plano e limites de localização em segundo plano.
- Atributos:
android:description
- Uma string legível pelo usuário que descreve o serviço. A descrição é definida como uma referência a um recurso de string para que possa ser localizada como outras strings da interface do usuário.
android:directBootAware
Define se o serviço tem reconhecimento de inicialização direta, ou seja, se ele pode ser executado antes de o usuário desbloquear o dispositivo.
Observação: durante a inicialização direta, um serviço no aplicativo só pode acessar os dados no armazenamento protegido do dispositivo.
O valor padrão é
"false"
.android:enabled
- Define se o serviço pode ser instanciado pelo sistema:
"true"
, se puder, ou, caso contrário,"false"
. O valor padrão é"true"
.O elemento
<application>
tem o próprio atributoenabled
em todos os componentes do aplicativo, inclusive serviços. Os atributos<application>
e<service>
precisam ser"true"
, como já são por padrão, para que o serviço seja ativado. Se algum deles é"false"
, o serviço é desativado e não pode ser instanciado. android:exported
- Define se os componentes de outros aplicativos podem invocar
o serviço ou interagir com ele:
"true"
, se puderem, ou, caso contrário,"false"
. Quando o valor é"false"
, somente os componentes do mesmo aplicativo ou aplicativos com o mesmo ID de usuário podem iniciar o serviço ou ser vinculados a ele.O valor padrão depende de o serviço conter ou não filtros de intents. A ausência de filtros significa que o serviço só pode ser invocado com a especificação do nome exato da própria classe. Isso indica que o serviço se destina somente a uso interno do aplicativo, já que outros não sabem o nome da classe. Por isso, nesse caso, o valor padrão é
"false"
. Por outro lado, a presença de pelo menos um filtro implica que o serviço se destina a uso externo. Assim, o valor padrão é"true"
.Esse atributo não é a única forma de limitar a exposição de um serviço a outros aplicativos. Também é possível usar uma permissão para limitar as entidades externas que podem interagir com o serviço. Consulte o atributo
permission
. android:foregroundServiceType
Especifica o serviço como um serviço em primeiro plano que satisfaz um caso de uso específico. Por exemplo, um tipo de serviço em primeiro plano de
"location"
indica que um app acessa a localização atual do dispositivo, geralmente para continuar uma ação iniciada pelo usuário relacionada a essa informação.Você pode atribuir vários tipos de serviço em primeiro plano a um serviço específico.
android:icon
- É um ícone que representa o serviço. Esse atributo é definido como uma
referência a um recurso drawable que contém a definição da imagem.
Se ele não for definido, será usado o ícone especificado para o aplicativo
como um todo. Consulte o atributo
icon
do elemento<application>
.O ícone do serviço, definido aqui ou pelo elemento
<application>
, é também o ícone padrão para todos os filtros de intent do serviço. Consulte o atributoicon
do elemento<intent-filter>
. android:isolatedProcess
- Se definido como
"true"
, esse serviço é executado em um processo especial isolado do restante do sistema e não tem permissões próprias. A única comunicação com o serviço ocorre pela API Service, com vinculação e inicialização. android:label
- Um nome legível pelo usuário para o serviço.
Se esse atributo não for definido, será usado o rótulo definido para o aplicativo como um todo. Consulte o atributo
label
do elemento<application>
.O rótulo do serviço, definido aqui ou pelo elemento
<application>
, é também o rótulo padrão para todos os filtros de intent do serviço. Consulte o atributolabel
do elemento<intent-filter>
.O rótulo é definido como uma referência a um recurso de string para que ele possa ser localizado como outras strings da interface do usuário. No entanto, para facilitar o desenvolvimento do aplicativo, ele também pode ser definido como uma string bruta.
android:name
- É o nome da subclasse
Service
que implementa o serviço. Esse é um nome de classe totalmente qualificado, como"com.example.project.RoomService"
. No entanto, como abreviação, se o primeiro caractere do nome for um ponto, por exemplo,".RoomService"
, ele será anexado ao nome do pacote especificado no elemento<manifest>
.Depois de publicar o aplicativo, não mude esse nome (link em inglês), a menos que você defina
android:exported="false"
.Não há padrão. O nome precisa ser especificado.
android:permission
- O nome de uma permissão que uma entidade precisa ter para
iniciar o serviço ou se vincular a ele. Se o autor da chamada de
startService()
,bindService()
oustopService()
não receber essa permissão, o método não vai funcionar, e aIntent
não será entregue ao serviço.Se o atributo não for definido, será aplicada a permissão definida pelo atributo
permission
do elemento<application>
. Se nenhum atributo for definido, nenhuma permissão vai proteger o serviço.Para saber mais sobre permissões, consulte a seção Permissões, na visão geral do manifesto do app, e as Diretrizes de segurança.
android:process
- O nome do processo em que o serviço é executado. Normalmente,
todos os componentes de um aplicativo são executados no processo padrão criado para
ele. Ele tem o mesmo nome do pacote do aplicativo. O
atributo
process
do elemento<application>
pode definir um padrão diferente para todos os componentes. No entanto, um componente pode substituir o padrão com o próprio atributoprocess
, permitindo distribuir seu aplicativo em vários processos.Se o nome dado a esse atributo começar com dois-pontos (
:
), um novo processo, específico ao aplicativo, será criado quando necessário, e o serviço será executado nesse processo.Se o nome do processo começar com um caractere em letra minúscula, o serviço será executado em um processo global com esse nome, desde que tenha permissão. Isso permite que os componentes de diferentes aplicativos compartilhem um processo, reduzindo o uso de recursos.
- Confira também:
<application>
<activity>
- Introduzido no:
- Nível 1 da API
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2024-08-22 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Não contém as informações de que eu preciso"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Muito complicado / etapas demais"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Desatualizado"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema na tradução"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema com as amostras / o código"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Outro"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Fácil de entender"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Meu problema foi resolvido"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Outro"
}]
{"lastModified": "\u00daltima atualiza\u00e7\u00e3o 2024-08-22 UTC."}
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2024-08-22 UTC."]]