<serviço>

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"
         android:stopWithTask=["true" | "false"]>
    ...
</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 atributo enabled 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 atributo icon 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 atributo label 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() ou stopService() não receber essa permissão, o método não vai funcionar, e a Intent 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 atributo process, 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.

android:stopWithTask
Se definido como "true", o sistema vai interromper automaticamente o serviço quando o usuário remover uma tarefa com raiz em uma atividade que pertence ao app. O valor padrão é "false".
veja também:
<application>
<activity>
Introduzido no:
Nível 1 da API