- 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" android:stopWithTask=["true" | "false"]> ... </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 aktywności usługi nie mają wizualnego interfejsu użytkownika. Służy on do implementowania długotrwałych operacji w tle lub interfejsu API do komunikacji rozszerzonej, który może być wywoływany przez inne aplikacje.Wszystkie usługi muszą być reprezentowane przez elementy
<service>
w pliku manifestu. Wszystkie, które nie są tam zadeklarowane, nie są widoczne dla systemu i nigdy nie są uruchamiane.Uwaga: w Androidzie 8.0 (poziom interfejsu API 26) i nowszych system ogranicza możliwości aplikacji podczas jej działania w tle. Więcej informacji znajdziesz w instrukcjach dotyczących ograniczeń wykonywania w tle i ograniczeń dostępu do lokalizacji w tle.
- atrybuty:
android:description
- Zrozumiały dla użytkownika ciąg tekstowy opisujący usługę. Opis jest ustawiany jako odwołanie do zasobu ciągu znaków, dzięki czemu można go zlokalizować tak jak inne ciągi znaków w interfejsie.
android:directBootAware
Czy usługa jest świadoma bezpośredniego uruchamiania, czyli czy może działać, zanim użytkownik odblokuje urządzenie.
Uwaga: podczas uruchamiania bezpośredniego usługa w aplikacji może uzyskać dostęp tylko do danych przechowywanych w chronionym miejscu na urządzeniu.
Wartość domyślna to
"false"
.android:enabled
- Czy usługa może być instancjonowana przez system.
"true"
, jeśli jest to możliwe, i"false"
, jeśli nie. Wartością domyślną jest"true"
.Element
<application>
ma własny atrybutenabled
, który ma zastosowanie do wszystkich komponentów aplikacji, w tym usług. Aby usługa była włączona, atrybuty<application>
i<service>
muszą mieć wartość"true"
, ponieważ domyślnie mają taką wartość. Jeśli któryś z tych elementów jest ustawiony na wartość"false"
, usługa jest wyłączona i nie można jej utworzyć. android:exported
- Czy komponenty innych aplikacji mogą wywoływać usługę lub wchodzić z nią w interakcję. Jeśli tak, to
"true"
, a jeśli nie, to"false"
. Gdy wartość to"false"
, usługę mogą uruchamiać lub z nią łączyć tylko komponenty tej samej aplikacji lub aplikacji z tym samym identyfikatorem użytkownika.Wartość domyślna zależy od tego, czy usługa zawiera filtry intencji. Brak jakichkolwiek filtrów oznacza, że można go wywołać, podając dokładną nazwę klasy. Oznacza to, że usługa jest przeznaczona tylko do użytku wewnętrznego aplikacji, ponieważ inne osoby nie znają nazwy klasy. W tym przypadku wartością domyślną jest
"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 na ograniczenie ekspozycji usługi w innych aplikacjach. Możesz też użyć uprawnienia, aby ograniczyć dostęp do usługi podmiotom zewnętrznym. Zapoznaj się z atrybutem
permission
. android:foregroundServiceType
Określa, że usługa jest usługą na pierwszym planie, która spełnia określone wymagania. Na przykład typ usługi na pierwszym planie
"location"
wskazuje, że aplikacja pobiera aktualną lokalizację urządzenia, zwykle w celu kontynuowania działania wywołanego przez użytkownika związanego z lokalizacją urządzenia.Do konkretnej usługi możesz przypisać wiele typów usług na pierwszym planie.
android:icon
- Ikona usługi. Ten atrybut jest ustawiany jako odwołanie do zasobu rysowanego zawierającego definicję obrazu.
Jeśli nie jest ustawiona, używana jest ikona określona dla aplikacji jako całości. Sprawdź atrybut
icon
elementu<application>
.Ikona usługi, niezależnie od tego, czy została ustawiona tutaj, czy przez element
<application>
, jest też domyślną ikoną wszystkich filtrów intencji usługi. Sprawdź atrybuticon
elementu<intent-filter>
. android:isolatedProcess
- Jeśli wartość to
"true"
, usługa działa w ramach specjalnego procesu, który jest odizolowany od reszty systemu i nie ma własnych uprawnień. Jedyną formą komunikacji z nim jest interfejs API usługi, z którym łączy się i który uruchamia. android:label
- Nazwa usługi zrozumiała dla użytkownika.
Jeśli ten atrybut nie jest ustawiony, zamiast niego używana jest etykieta ustawiona dla aplikacji jako całości. Sprawdź atrybut
label
elementu<application>
.Etykieta usługi, niezależnie od tego, czy jest ustawiona tutaj, czy przez element
<application>
, jest też domyślną etykietą wszystkich filtrów intencji usługi. Sprawdź atrybutlabel
elementu<intent-filter>
.Etykieta jest ustawiana jako odwołanie do zasobu ciągu znaków, aby można ją było zlokalizować tak jak inne ciągi znaków w interfejsie. Jednak na potrzeby wygody podczas tworzenia aplikacji można go też ustawić jako ciąg znaków.
android:name
- Nazwa podklasy
Service
, która implementuje usługę. Jest to pełna nazwa klasy, np."com.example.project.RoomService"
. Jednak w ramach skrótu, jeśli pierwszy znak nazwy to kropka, np.".RoomService"
, jest on dołączany do nazwy pakietu określonej w elemencie<manifest>
.Po opublikowaniu aplikacji nie zmieniaj tej nazwy, chyba że ustawisz parametr
android:exported="false"
.Nie ma wartości domyślnej. Musisz podać nazwę.
android:permission
- Nazwa uprawnienia, którego potrzebuje podmiot, aby uruchomić usługę lub się z nią połączyć. Jeśli wywołujący
startService()
,bindService()
lubstopService()
nie ma tego uprawnienia, metoda nie działa, a obiektIntent
nie jest dostarczany do usługi.Jeśli ten atrybut nie jest ustawiony, uprawnienia ustawione przez atrybut
<application>
elementupermission
mają zastosowanie do usługi. 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 opisie pliku manifestu aplikacji oraz w wytycznych dotyczących zabezpieczeń.
android:process
- Nazwa procesu, w którym działa usługa. Zazwyczaj wszystkie komponenty aplikacji działają w ramach domyślnego procesu utworzonego dla tej aplikacji. Ma ona tę samą nazwę co pakiet aplikacji. Atrybut elementu
<application>
process
może określać inny domyślny parametr dla wszystkich komponentów. Składnik może jednak zastąpić domyślne ustawienie za pomocą własnego atrybutuprocess
, co pozwala rozłożyć aplikację na kilka procesów.Jeśli nazwa przypisana do tego atrybutu zaczyna się od dwukropka (
:
), w razie potrzeby tworzy się nowy proces, który jest prywatny dla aplikacji, a usługa działa w ramach tego procesu.Jeśli nazwa procesu zaczyna się małą literą, usługa działa w ramach globalnego procesu o tej nazwie, o ile ma na to uprawnienia. Pozwala to komponentom w różnych aplikacjach współdzielić proces, co zmniejsza wykorzystanie zasobów.
android:stopWithTask
- Jeśli to ustawienie jest włączone, system automatycznie zatrzymuje usługę, gdy użytkownik usunie zadanie, które jest związane z działaniem należącym do aplikacji.
"true"
Wartością domyślną jest"false"
.
- Zobacz też:
<application>
<activity>
- wprowadzona w:
- Poziom 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-12-18 UTC.
[null,null,["Ostatnia aktualizacja: 2024-12-18 UTC."],[],[]]