- 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 atrybutenabled
, 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 atrybuticon
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 atrybutlabel
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()
lubstopService()
nie otrzyma tego uprawnienia, metoda nie będzie działać, a obiektIntent
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 atrybutemprocess
, 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
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2024-04-02 UTC.
[]
[]