<usługa>

składnia:
<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>
zawarte w:
<application>
może zawierać:
<intent-filter>
<meta-data>
description:
Deklaruje usługę (podklasę Service) jako jeden z komponentów aplikacji. W przeciwieństwie do działań usługi nie mają wizualnego interfejsu użytkownika. Pozwalają wdrożyć długotrwałe operacje w tle lub interfejs API Rich Communication, które mogą być wywoływane przez inne aplikacje.

Wszystkie usługi muszą być reprezentowane przez elementy <service> w pliku manifestu. Wszystko, co nie zostało zadeklarowane, nie jest widoczne dla systemu i nigdy nie jest uruchamiane.

Uwaga: w Androidzie 8.0 (poziom interfejsu API 26) i nowszych system ogranicza możliwości aplikacji działającej w tle. Więcej informacji znajdziesz w przewodnikach omawiających limity wykonywania w tle i limity lokalizacji w tle.

atrybuty:
android:description
Zrozumiały dla użytkownika ciąg tekstowy opisujący usługę. Opis jest ustawiony jako odwołanie do zasobu tekstowego, więc można go zlokalizować w interfejsie tak samo jak inne ciągi.
android:directBootAware

Określa, czy usługa działa w trybie bezpośredniego rozruchu, czyli czy może działać, zanim użytkownik odblokuje urządzenie.

Uwaga: w trakcie rozruchu bezpośredniego usługa w aplikacji ma dostęp tylko do danych przechowywanych w pamięci chronionej urządzeniem.

Wartość domyślna to "false".

android:enabled
Czy system może utworzyć instancję usługi. Jeśli może, to "true". Jeśli nie, to "false". Wartością domyślną jest "true".

Element <application> ma własny atrybut enabled, który odnosi się do wszystkich komponentów aplikacji, w tym usług. Aby usługa została włączona, obydwa atrybuty <application> i <service> muszą mieć wartość "true", ponieważ oba mają wartość domyślną. Jeśli dowolną z tych wartości jest "false", usługa jest wyłączona i nie można utworzyć instancji.

android:exported
Czy komponenty innych aplikacji mogą wywoływać usługę lub wchodzić z nią w interakcje. Jeśli może, "true", lub "false", jeśli nie. Gdy wartość to "false", tylko komponenty tej samej aplikacji lub aplikacji z tym samym identyfikatorem użytkownika mogą uruchamiać usługę lub tworzyć z nią powiązanie.

Wartość domyślna zależy od tego, czy usługa zawiera filtry intencji. Brak filtrów oznacza, że można je wywoływać tylko przez podanie dokładnej nazwy klasy. Oznacza to, że usługa jest przeznaczona tylko do użytku wewnętrznego w aplikacji, ponieważ inne osoby nie znają nazwy klasy. Wartość domyślna w tym przypadku to "false". Z drugiej strony obecność co najmniej 1 filtra oznacza, że usługa jest przeznaczona do użytku zewnętrznego, więc wartość domyślna to "true".

Ten atrybut nie jest jedynym sposobem ograniczenia udostępniania usługi innym aplikacjom. Możesz też użyć tego uprawnienia, aby ograniczyć liczbę jednostek zewnętrznych, które mogą korzystać z usługi. Zobacz atrybut permission.

android:foregroundServiceType

Określa, że usługa jest usługą na pierwszym planie, która spełnia konkretny przypadek użycia. Na przykład typ usługi na pierwszym planie "location" wskazuje, że aplikacja uzyskuje informacje o bieżącej lokalizacji urządzenia, zwykle w celu kontynuowania zainicjowanego przez użytkownika działania związanego z jego lokalizacją.

Do konkretnej usługi możesz przypisać wiele typów takich usług.

android:icon
Ikona usługi. Ten atrybut jest ustawiony jako odwołanie do rysowalnego zasobu zawierającego definicję obrazu. Jeśli nie jest ustawiona, używana jest ikona określona dla całej aplikacji. Patrz atrybut icon elementu <application>.

Ikona usługi, niezależnie od tego, czy jest ustawiona tutaj czy przez element <application>, jest też domyślną ikoną wszystkich filtrów intencji usługi. Zobacz atrybut icon elementu <intent-filter>.

android:isolatedProcess
Jeśli ma wartość "true", usługa działa w ramach specjalnego procesu, który jest izolowany od reszty systemu i nie ma własnych uprawnień. Komunikacja z nią odbywa się tylko przez interfejs Service API (wiążący i rozpoczynający).
android:label
Czytelna dla użytkownika nazwa usługi. Jeśli ten atrybut nie jest ustawiony, używana jest etykieta ustawiona dla całej aplikacji. Zobacz atrybut label elementu <application>.

Etykieta usługi, ustawiona tutaj lub przez element <application>, jest też domyślną etykietą wszystkich filtrów intencji usługi. Zobacz atrybut label elementu <intent-filter>.

Etykieta jest ustawiona jako odwołanie do zasobu w postaci ciągu znaków, dzięki czemu można ją zlokalizować tak samo jak inne ciągi w interfejsie. Dla wygody podczas programowania aplikacji możesz ją jednak także ustawić jako nieprzetworzony ciąg znaków.

android:name
Nazwa podklasy Service, która implementuje usługę. Jest to pełna i jednoznaczna nazwa klasy, na przykład "com.example.project.RoomService". W skrócie: jeśli pierwszym znakiem nazwy jest kropka, np. ".RoomService", jest on dołączany do nazwy pakietu podanej w elemencie <manifest>.

Po opublikowaniu aplikacji nie zmieniaj tej nazwy, chyba że ustawisz wartość android:exported="false".

Brak wartości domyślnej. Należy podać nazwę.

android:permission
Nazwa uprawnienia, którego jednostka potrzebuje w celu uruchomienia usługi lub utworzenia powiązania z nią. Jeśli element wywołujący startService(), bindService() lub stopService() nie otrzyma tego uprawnienia, metoda nie będzie działać, a obiekt Intent nie zostanie dostarczony do usługi.

Jeśli ten atrybut nie zostanie ustawiony, do usługi będą stosowane uprawnienia ustawione przez atrybut permission elementu <application>. Jeśli żaden z tych atrybutów nie jest ustawiony, usługa nie jest chroniona przez uprawnienie.

Więcej informacji o uprawnieniach znajdziesz w sekcji Uprawnienia w pliku manifestu aplikacji i w wskazówkach na temat bezpieczeństwa.

android:process
Nazwa procesu, w którym działa usługa. Zwykle wszystkie komponenty aplikacji działają w ramach domyślnego procesu utworzonego dla niej. Ma taką samą nazwę jak pakiet aplikacji. Atrybut process elementu <application> może ustawiać inne wartości domyślne dla wszystkich komponentów. Komponent może jednak zastąpić wartość domyślną własnym atrybutem process, co pozwala rozłożyć aplikację na wiele procesów.

Jeśli nazwa przypisana do tego atrybutu zaczyna się od dwukropka (:), w razie potrzeby tworzony jest nowy proces, prywatny dla aplikacji, a usługa działa w tym procesie.

Jeśli nazwa procesu zaczyna się od małej litery, usługa działa w globalnym procesie o tej nazwie, o ile ma do tego uprawnienia. Dzięki temu komponenty w różnych aplikacjach współużytkują proces, co zmniejsza wykorzystanie zasobów.

zobacz też:
<application>
<activity>
wprowadzone w:
Poziom interfejsu API 1