<aktywność>

składnia:
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:canDisplayOnRemoteDevices=["true" | "false"]
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["colorMode", "density",
                                 "fontScale", "fontWeightAdjustment",
                                 "grammaticalGender", "keyboard",
                                 "keyboardHidden", "layoutDirection", "locale",
                                 "mcc", "mnc", "navigation", "orientation",
                                 "screenLayout", "screenSize",
                                 "smallestScreenSize", "touchscreen", "uiMode"]
          android:directBootAware=["true" | "false"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:enabledOnBackInvokedCallback=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:immersive=["true" | "false"]
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance" | "singleInstancePerTask"]
          android:lockTaskMode=["normal" | "never" |
                              "if_whitelisted" | "always"]
          android:maxRecents="integer"
          android:maxAspectRatio="float"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:persistableMode=["persistRootOnly" | 
                                   "persistAcrossReboots" | "persistNever"]
          android:permission="string"
          android:process="string"
          android:relinquishTaskIdentity=["true" | "false"]
          android:requireContentUriPermissionFromCaller=["none" | "read" | "readAndWrite" |
                                                         "readOrWrite" | "write"] 
          android:resizeableActivity=["true" | "false"]
          android:screenOrientation=["unspecified" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "userLandscape" | "userPortrait" |
                                     "sensor" | "fullSensor" | "nosensor" |
                                     "user" | "fullUser" | "locked"]
          android:showForAllUsers=["true" | "false"]
          android:stateNotNeeded=["true" | "false"]
          android:supportsPictureInPicture=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
    ...
</activity>
zawarte w:
<application>
mogą zawierać:
<intent-filter>
<meta-data>
<layout>
description:
Deklaruje aktywność (podklasę Activity), która implementuje część wizualnego interfejsu użytkownika aplikacji. Wszystkie działania muszą być reprezentowane w pliku manifestu przez elementy <activity>. Te, które nie zostały zadeklarowane, nie są wykrywane przez system i nigdy nie są uruchamiane.
atrybuty:
android:allowEmbedded

Wskazuje, że działanie może zostać uruchomione jako element podrzędny innej aktywności, zwłaszcza w przypadku, gdy element podrzędny znajduje się w kontenerze, np. w elemencie Display należącym do innej aktywności. Na przykład aktywności używane do niestandardowych powiadomień na urządzeniach z Wear są deklarowane tak, aby usługa Wear mogła wyświetlać aktywność w strumieniach kontekstu, która jest częścią innego procesu.

Domyślna wartość tego atrybutu to false.

android:allowTaskReparenting
Określenie, czy działanie może przejść z zadania, które je zainicjowało, do zadania, z którym jest powiązane, gdy to zadanie zostanie przeniesione na wierzch. Wartość to "true", jeśli może się przenieść, lub "false", jeśli pozostaje w zadaniu, od którego zostało rozpoczęte.

Jeśli ten atrybut nie jest skonfigurowany, do aktywności stosowana jest wartość ustawiona przez odpowiedni atrybut allowTaskReparenting elementu <application>. Wartością domyślną jest "false".

Normalnie rozpoczynane działanie jest powiązane z zadaniem, które je zainicjowało, i pozostaje tam przez cały okres istnienia. Możesz użyć tego atrybutu, aby wymusić przypisanie do zadania, z którym ma koligację, gdy bieżące zadanie nie jest już wyświetlane. Zwykle powoduje to przeniesienie działań aplikacji do głównego zadania, które jest z nią powiązane.

Jeśli na przykład e-mail zawiera link do strony internetowej, kliknięcie go powoduje wyświetlenie działania, które może wyświetlić tę stronę. Działanie to jest definiowane przez przeglądarkę, ale jest uruchamiane w ramach zadania dotyczącego poczty e-mail. Jeśli pojawi się ono ponownie w zadaniu przeglądarki, zobaczysz, że przeglądarka będzie wyświetlać się na wierzchu, i tego go nie widać, gdy zadanie poczty e-mail zostanie podane ponownie.

Koligacja aktywności jest określana przez atrybut taskAffinity. Koligacja zadania określa się na podstawie odczytu koligacji jego głównego działania. Dlatego z definicji działanie roota jest zawsze jednym z zadań z tym samym koligacją. Działania z trybami uruchamiania "singleTask" lub "singleInstance" mogą znajdować się tylko w głównej części zadania, dlatego ustawienie rodzicielskie jest ograniczone do trybów "standard" i "singleTop". (Zobacz też atrybut launchMode).

android:alwaysRetainTaskState
Czy stan zadania, w którym znajduje się aktywność, jest zawsze obsługiwany przez system. "true", a także "false", jeśli w określonych sytuacjach system może zresetować zadanie do stanu początkowego. Wartością domyślną jest "false". Ten atrybut ma znaczenie tylko w odniesieniu do głównego działania danego zadania. Jest ignorowana w przypadku innych działań.

Normalnie w pewnych sytuacjach, gdy użytkownik ponownie wybierze zadanie na ekranie głównym, system czyści zadanie, usuwając wszystkie jego działania ze stosu nad aktywnością główną. Zwykle ma to miejsce wtedy, gdy użytkownik nie skorzystał z danego zadania przez określony czas, na przykład 30 minut.

Jeśli jednak ten atrybut ma wartość "true", użytkownicy zawsze wracają do zadania w ostatnim stanie, niezależnie od tego, jak do niego dotrą. Jest to przydatne w aplikacjach takich jak przeglądarka, w których występuje wiele stanów, np. wiele otwartych kart, których użytkownicy nie chcą stracić.

android:autoRemoveFromRecents
Określenie, czy zadania uruchomione przez aktywność z tym atrybutem pozostają na ekranie Ostatnie do momentu zakończenia ostatniego działania związanego z danym zadaniem. Jeśli true, zadanie zostanie automatycznie usunięte z ekranu Ostatnie. Zastępuje to użycie FLAG_ACTIVITY_RETAIN_IN_RECENTS przez rozmówcę. Musi to być wartość logiczna, np. "true" lub "false".
android:banner
Zasób rysowalny z rozszerzonym banerem graficznym dla powiązanego elementu. Użyj tagu <activity>, aby podać domyślny baner dla konkretnej aktywności, lub tagu <application>, by udostępnić baner dla wszystkich działań w aplikacji.

System używa banera do reprezentowania aplikacji na ekranie głównym Androida TV. Baner wyświetla się tylko na ekranie głównym, dlatego jest określany tylko przez aplikacje z działaniem obsługującym intencję CATEGORY_LEANBACK_LAUNCHER.

Ten atrybut jest ustawiony jako odniesienie do rysowalnego zasobu zawierającego obraz, np. "@drawable/banner". Brak domyślnego banera.

Więcej informacji znajdziesz w artykule Umieszczanie banera na ekranie głównym w artykule Pierwsze kroki z aplikacjami telewizyjnymi.

android:canDisplayOnRemoteDevices

Wskazuje, czy aktywność może być wyświetlana na urządzeniu zdalnym, na którym może być zainstalowany Android. Musi to być wartość logiczna, np. "true" lub "false".

Domyślna wartość tego atrybutu to "true".

android:clearTaskOnLaunch
Czy z zadania zostaną usunięte wszystkie działania oprócz aktywności głównej, gdy zostanie ono ponownie uruchomione z ekranu głównego. "true", jeśli zadanie jest zawsze ograniczone do głównej aktywności, a "false", jeśli nie. Wartością domyślną jest "false". Ten atrybut ma znaczenie tylko w przypadku działań, które rozpoczynają nowe zadanie, czyli działanie główne. Jest ignorowana w przypadku wszystkich innych działań w zadaniu.

Jeśli wartość wynosi "true", przy każdym uruchomieniu zadania użytkownik jest przenoszony do głównej aktywności niezależnie od tego, co wykonywali ostatnio w zadaniu, ani od tego, czy opuścili je przycisk Wstecz czy przycisk strony głównej. Gdy wartość wynosi "false", w niektórych sytuacjach, ale nie zawsze, zadanie może zostać usunięte z działań. Więcej informacji znajdziesz w atrybucie alwaysRetainTaskState.

Załóżmy, że użytkownik uruchamia działanie P na ekranie głównym, a następnie przechodzi do działania Q. Użytkownik klika przycisk ekranu głównego, a potem wraca do aktywności P. Normalnie użytkownik widzi aktywność Q, ponieważ to właśnie ją ostatnio wykonywał w zadaniu P. Jeśli jednak P ustawi tę flagę na "true", wszystkie powiązane z nią działania – w tym przypadku Q – zostaną usunięte, gdy użytkownik uruchomi działanie P na ekranie głównym. Dzięki temu po powrocie do zadania użytkownik będzie widzieć tylko P.

Jeśli zarówno ten atrybut, jak i atrybut allowTaskReparenting mają wartość "true", wszystkie działania, które mogą zostać uwzględnione w roli nadrzędnych, są przenoszone do zadania, z którym są powiązane koligacja. Pozostałe działania są usuwane.

Jeśli nie ustawiono atrybutu FLAG_ACTIVITY_RESET_TASK_IF_NEEDED, ten atrybut jest ignorowany.

android:colorMode

Określa tryb kolorów aktywności. Jeśli została określona, może mieć wartość hdr lub wideColorGamut.

Jeśli zasada hdr, prosi o wyświetlenie aktywności w wysokim zakresie dynamicznym, o ile urządzenie je obsługuje.

Jeśli parametr wideColorGamut, prosi o wyświetlenie aktywności w trybie szerokiej gamy kolorów na zgodnych urządzeniach. W trybie szerokiej gamy kolorów okno może renderować się poza zakresem SRGB, aby pokazać bardziej żywe kolory. Jeśli urządzenie nie obsługuje renderowania o szerokiej gamie kolorów, ten atrybut nie ma zastosowania. Więcej informacji o renderowaniu w szerokiej gamie kolorów znajdziesz w artykule Ulepszanie grafiki za pomocą treści o szerokiej gamie kolorów.

android:configChanges
Zawiera zmiany konfiguracji, które są obsługiwane przez aktywność. Gdy zmiana konfiguracji następuje w czasie działania, aktywność jest domyślnie wyłączana i uruchamiana ponownie, ale zadeklarowanie konfiguracji z tym atrybutem uniemożliwia jej ponowne uruchomienie. Zamiast tego działanie pozostanie aktywne, a jego metoda onConfigurationChanged() zostanie wywołana.

Uwaga: używaj tego atrybutu tylko w szczególnych przypadkach, aby poprawić wydajność i responsywność aplikacji. Więcej informacji znajdziesz w artykule Obsługa zmian konfiguracji.

Następujące ciągi znaków są prawidłowymi wartościami tego atrybutu. Kilka wartości jest rozdzielonych znakiem |, np. "locale|navigation|orientation".

Wartość Opis
"colorMode"

Zmieniły się możliwości trybu kolorów ekranu (gama kolorów lub zakres dynamiczny).

Uwaga: tryb kolorów, którego wymaga aktywność z atrybutem colorMode lub w czasie działania, różni się od trybu kolorów, w przypadku których występują różne tryby kolorów. Działanie zmieniające używany tryb kolorów nie powoduje zmiany konfiguracji, bo funkcje kolorystyczne wyświetlacza się nie zmieniły.

"density"

zmianę gęstości wyświetlania, np. gdy użytkownik wybierze inną skalę wyświetlacza lub aktywny jest inny wyświetlacz;

Dodano na poziomie interfejsu API 24.

"fontScale" Zmiana współczynnika skalowania czcionki, na przykład gdy użytkownik wybierze nowy globalny rozmiar czcionki.
"fontWeightAdjustment" Zmieniła się wielkość czcionki.
"grammaticalGender" Zmieniła się rodzaj gramatyczna języka. Zobacz GrammaticalInflectionManager.

Dodano na poziomie interfejsu API 34.

"keyboard" Zmiana typu klawiatury, na przykład data podłączenia klawiatury zewnętrznej przez użytkownika.
"keyboardHidden" zmiana w ułatwieniach dostępu klawiatury, na przykład wyświetlenie klawiatury sprzętowej przez użytkownika;
"layoutDirection"

Zmiana kierunku układu, na przykład z lewej do prawej (LTR) na od prawej do lewej (RTL).

Dodano na poziomie API 17.

"locale" zmiana ustawień regionalnych, na przykład wybór przez użytkownika nowego języka wyświetlania tekstu;
"mcc" Zmiana kodu kraju na telefon komórkowy (MCK) IMSI po wykryciu karty SIM aktualizująca konto MCK.
"mnc" Zmiana kodu sieci komórkowej IMSI (MNC) po wykryciu karty SIM w celu aktualizacji MNC.
"navigation" TA – zmiana na typ nawigacji (kulka lub pad kierunkowy). Zwykle to się nie zdarza.
"orientation"

Zmiana orientacji ekranu, na przykład zmiana orientacji urządzenia przez użytkownika.

Uwaga: jeśli Twoja aplikacja jest kierowana na Androida 3.2 (poziom interfejsu API 13) lub nowszego, zadeklaruj też konfiguracje "screenLayout" i "screenSize", ponieważ układ i rozmiar ekranu mogą się zmieniać, gdy urządzenie przełącza się między orientacją pionową a poziomą.

"screenLayout" zmiany w układzie ekranu, na przykład po aktywowaniu innego wyświetlacza.
"screenSize"

Zmiana aktualnego dostępnego rozmiaru ekranu.

Jest to zmiana obecnie dostępnego rozmiaru względem bieżącego formatu obrazu, która zmienia się, gdy użytkownik przełącza się między pionową i poziomą.

Dodano na poziomie interfejsu API 13.

"smallestScreenSize"

Zmiana rozmiaru ekranu.

Jest to zmiana rozmiaru niezależnie od orientacji, więc zmienia się tylko wtedy, gdy zmieni się rzeczywisty rozmiar ekranu, np. przełączenie się na wyświetlacz zewnętrzny. Zmiana tej konfiguracji odpowiada zmianie w konfiguracji smallestWidth.

Dodano na poziomie interfejsu API 13.

"touchscreen" Zmiana na ekranie dotykowym. Zwykle to się nie zdarza.
"uiMode" Zmiana trybu interfejsu, na przykład ustawienie urządzenia w biurku lub samochodowej stacji dokującej albo zmiana trybu nocnego. Więcej informacji o różnych trybach interfejsu znajdziesz tutaj: UiModeManager.

Dodano na poziomie API 8.

Wszystkie te zmiany w konfiguracji mogą mieć wpływ na wartości zasobów widoczne dla aplikacji. Dlatego w przypadku wywołania onConfigurationChanged() zwykle konieczne jest ponowne pobranie wszystkich zasobów, w tym układów widoku i elementów rysowalnych, aby poprawnie obsłużyć zmianę.

Uwaga: aby obsługiwać zmiany w konfiguracji związane z wieloma oknami, musisz używać zarówno "screenLayout", jak i "smallestScreenSize". Tryb wielu okien jest obsługiwany w Androidzie 7.0 (poziom interfejsu API 24) i nowszych.

android:directBootAware

Określa, czy aktywność jest rozpoznawana podczas rozruchu, czyli może zostać uruchomiona, zanim użytkownik odblokuje urządzenie.

Uwaga: podczas uruchamiania bezpośredniego działanie w aplikacji uzyskuje dostęp wyłącznie do danych, które są przechowywane w pamięci chronionej przez urządzenie.

Wartość domyślna to "false".

android:documentLaunchMode
Określa sposób dodawania nowych wystąpień aktywności do zadania przy każdym jego uruchomieniu. Ten atrybut pozwala użytkownikowi mieć kilka dokumentów z tej samej aplikacji wyświetlanych na ekranie Ostatnie.

Ten atrybut ma 4 wartości, które powodują, gdy użytkownik otworzy dokument w aplikacji:

Wartość Opis
"intoExisting" System wyszukuje zadanie, którego atrybuty ComponentName intencji podstawowej i identyfikator URI danych pasują do intencji uruchamiania. Jeśli system znajdzie takie zadanie, czyści je i uruchomi się ponownie, a aktywność główna otrzyma wywołanie onNewIntent(android.content.Intent). Jeśli system nie znajdzie takiego zadania, utworzy nowe zadanie.
"always" Utworzy to nowe zadanie dla dokumentu, nawet jeśli dokument jest już otwarty. Przypomina to ustawienie flag FLAG_ACTIVITY_NEW_DOCUMENT i FLAG_ACTIVITY_MULTIPLE_TASK.
"none" Działanie nie powoduje utworzenia nowego zadania. Jest to wartość domyślna, która tworzy nowe zadanie tylko wtedy, gdy jest skonfigurowana zasada FLAG_ACTIVITY_NEW_TASK. Ekran Ostatnie traktuje aktywność tak samo jak domyślnie: wyświetla pojedyncze zadanie dla aplikacji, które jest wznawiane od tego, co ostatnio wywołał użytkownik.
"never" Aktywność nie jest uruchamiana w nowym dokumencie, nawet jeśli intencja zawiera ciąg FLAG_ACTIVITY_NEW_DOCUMENT. Ta opcja powoduje zastąpienie zachowania flag FLAG_ACTIVITY_NEW_DOCUMENT i FLAG_ACTIVITY_MULTIPLE_TASK, jeśli któraś z nich jest ustawiona w aktywności, a na ekranie Ostatnie wyświetlane jest jedno zadanie dla aplikacji, które jest wznawiane od aktywności ostatnio wywołanej przez użytkownika.

Uwaga: w przypadku wartości innych niż "none" i "never" aktywność jest zdefiniowana za pomocą atrybutu launchMode="standard". Jeśli ten atrybut nie jest określony, używany jest documentLaunchMode="none".

android:enabled
Określ, czy system może utworzyć wystąpienie działania. Jest to "true", jeśli może być, lub "false", jeśli może być. Wartością domyślną jest "true".

Element <application> ma własny atrybut enabled, który odnosi się do wszystkich komponentów aplikacji, w tym działań. Aby system mógł utworzyć instancję działania, oba atrybuty <application> i <activity> muszą być "true", ponieważ oba są domyślnie dostępne. Jeśli któraś z tych wartości ma wartość "false", nie można jej utworzyć.

android:enableOnBackInvokedCallback
Ta flaga pozwala włączyć prognozowane animacje systemowe na poziomie aktywności. Ułatwia to migrację dużych aplikacji o wielu aktywnościach na korzystanie z funkcji przewidywania gestów cofania.

Ustawienie android:enableOnBackInvokedCallback=false wyłącza animacje prognozowania wstecznego na poziomie aktywności lub na poziomie aplikacji (w zależności od tego, gdzie ustawisz tag), i informuje system, że ma ignorować wywołania interfejsu API platformy OnBackInvokedCallback.

android:excludeFromRecents

Określa, czy zadanie zainicjowane przez tę aktywność ma być wykluczane z ekranu Ostatnie. Oznacza to, że gdy to działanie jest głównym działaniem nowego zadania, ten atrybut określa, czy to zadanie pojawi się na liście ostatnich aplikacji. Wartość "true", jeśli zadanie jest wykluczone z listy, lub "false", jeśli jest uwzględnione. Wartością domyślną jest "false".

android:exported

Określa, czy działanie może zostać uruchomione przez komponenty innych aplikacji:

  • Jeśli "true", działanie jest dostępne dla dowolnej aplikacji i można je uruchomić pod dokładną nazwą klasy.
  • Jeśli zasada "false", aktywność może zostać uruchomiona tylko przez komponenty tej samej aplikacji, aplikacje o tym samym identyfikatorze użytkownika lub komponenty systemu z odpowiednimi uprawnieniami. Jest to wartość domyślna, gdy nie ma filtrów intencji.

Jeśli aktywność w aplikacji zawiera filtry intencji, ustaw ten element na "true", aby inne aplikacje mogły go uruchamiać. Na przykład wtedy, gdy aktywność jest główną aktywnością w aplikacji i obejmuje category android.intent.category.LAUNCHER.

Jeśli ten element ma wartość "false", a aplikacja próbuje rozpocząć aktywność, system zgłasza ActivityNotFoundException.

Ten atrybut nie jest jedynym sposobem ograniczenia ekspozycji działania na inne aplikacje. Uprawnienia pozwalają też ograniczyć zewnętrzne jednostki, które mogą wywoływać aktywność. Zobacz atrybut permission.

android:finishOnTaskLaunch
Informacje o tym, czy istniejąca instancja aktywności ma zostać wyłączona (z wyjątkiem aktywności głównej), gdy użytkownik ponownie uruchomi swoje zadanie, wybierając je na ekranie głównym. Jest to "true", jeśli urządzenie jest wyłączone, lub "false", jeśli nie. Wartością domyślną jest "false".

Jeśli zarówno ten atrybut, jak i atrybut allowTaskReparenting mają wartość "true", ten atrybut ma priorytet nad drugim. Koligacja działania jest ignorowana. Działanie nie zostaje nadrzędne wobec niej, ale zostaje zniszczone.

Jeśli nie ustawiono atrybutu FLAG_ACTIVITY_RESET_TASK_IF_NEEDED, ten atrybut jest ignorowany.

android:hardwareAccelerated
Określa, czy w przypadku danej aktywności włączone jest renderowanie z akceleracją sprzętową. "true", jeśli jest włączona, lub "false", jeśli nie jest włączona. Wartością domyślną jest "false".

W Androidzie 3.0 i nowszych aplikacje mogą korzystać z akcelerowanego sprzętowo mechanizmu renderowania OpenGL, aby zwiększyć wydajność w wielu typowych operacjach grafiki 2D. Gdy włączony jest mechanizm renderowania z akceleracją sprzętową, większość operacji wykonywanych w Canvas, Paint, Xfermode, ColorFilter, Shader i aparat jest przyspieszone.

Powoduje to płynniejsze animacje, płynniejsze przewijanie i ogólną responsywność nawet w aplikacjach, które nie używają bezpośrednio bibliotek OpenGL platformy. Ze względu na zwiększone zasoby do włączenia akceleracji sprzętowej aplikacja zużywa więcej pamięci RAM.

Nie wszystkie operacje OpenGL 2D są przyspieszone. Jeśli włączysz przyspieszanie sprzętowe renderowania, sprawdź, czy aplikacja może korzystać z niego bez błędów.

android:icon

Ikona symbolizująca aktywność. Ikona jest wyświetlana użytkownikom, gdy na ekranie wymagana jest reprezentacja działania. Na przykład ikony działań inicjujących zadania są wyświetlane w oknie programu uruchamiającego. ikonie często towarzyszy etykieta. Informacje o etykiecie znajdziesz w atrybucie android:label.

Ten atrybut jest ustawiony jako odwołanie do zasobu rysowalnego zawierającego definicję obrazu. Jeśli nie jest ustawiona, używana jest ikona określona dla całej aplikacji. Więcej informacji znajdziesz w atrybucie icon elementu <application>.

Ikona aktywności, ustawiona tutaj lub przez element <application>, jest też domyślną ikoną dla wszystkich filtrów intencji tej aktywności. Więcej informacji znajdziesz w atrybucie icon elementu <intent-filter>.

android:immersive
Określa ustawienie trybu pojemnego w bieżącej aktywności. Jeśli to "true", element ActivityInfo.flags zawsze ma ustawiony bit FLAG_IMMERSIVE, nawet jeśli tryb pojemny zmienia się w czasie działania przy użyciu metody setImmersive().
android:label

Czytelna dla użytkownika etykieta aktywności. Etykieta wyświetla się na ekranie, gdy aktywność jest przedstawiona użytkownikowi. Często wyświetla się obok ikony aktywności. Jeśli ten atrybut nie jest ustawiony, zamiast tego używana jest etykieta ustawiona dla całej aplikacji. Zobacz atrybut label elementu <application>.

Etykieta aktywności, określona tutaj lub przez element <application>, jest też domyślną etykietą wszystkich filtrów intencji tej aktywności. Więcej informacji znajdziesz w atrybucie label elementu <intent-filter>.

Etykieta jest ustawiana jako odniesienie do zasobu w postaci ciągu, więc można ją zlokalizować tak samo jak inne ciągi w interfejsie. Jednak dla wygody podczas tworzenia aplikacji można go też ustawić w postaci ciągu nieprzetworzonego.

android:launchMode

Instrukcja uruchamiania aktywności. Istnieje 5 trybów, które współdziałają z flagami aktywności (stałe FLAG_ACTIVITY_*) w obiektach Intent i określają, co się dzieje, gdy działanie jest wywoływane do obsługi intencji:

"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"

Tryb domyślny to "standard".

Jak widać w tabeli poniżej, tryby dzielą się na 2 główne grupy: działania "standard" i "singleTop" po jednej stronie, a działania "singleTask", "singleInstance" i "singleInstancePerTask" po drugiej. Działanie z trybem uruchamiania "standard" lub "singleTop" można utworzyć wiele razy.

Instancje mogą należeć do dowolnego zadania i znajdować się w dowolnym miejscu zadania związanego z aktywnością. Zwykle są one uruchamiane do zadania o nazwie startActivity(), chyba że obiekt Intent zawiera instrukcję FLAG_ACTIVITY_NEW_TASK, przez co wybierane jest inne zadanie. Więcej informacji znajdziesz w atrybucie taskAffinity.

Aktywności "singleTask", "singleInstance" i "singleInstancePerTask" działają natomiast inaczej. Element "singleInstancePerTask" znajduje się zawsze w głównej części zadania związanego z aktywnością. Dodatkowo urządzenie może przechowywać tylko 1 wystąpienie aktywności "singleInstance" w danym momencie, a wystąpienie "singleInstancePerTask może być inicjowane wiele razy w ramach różnych zadań, jeśli jest ustawione FLAG_ACTIVITY_MULTIPLE_TASK lub FLAG_ACTIVITY_NEW_DOCUMENT.

Działanie z trybem uruchamiania "singleTask" łączy w sobie zachowania "singleInstance" i "singleInstancePerTask". Działanie można utworzyć wiele razy i znajdować się w dowolnym miejscu w zadaniu tego samego elementu taskAffinity. Na urządzeniu może być jednak ustawione tylko jedno zadanie polegające na zlokalizowaniu aktywności "singleTask" w głównej części zadania związanego z aktywnością.

Tryby "standard" i "singleTop" różnią się od siebie pod jednym względem: za każdym razem, gdy pojawia się nowa intencja działania "standard", tworzona jest nowa instancja klasy, która odpowiada na tę intencję. Każda instancja obsługuje jedną intencję. Podobnie można utworzyć nowe wystąpienie działania "singleTop" do obsługi nowej intencji.

Jeśli jednak zadanie docelowe ma już instancję działania na górze stosu, ta instancja otrzyma nową intencję w wywołaniu onNewIntent(). Nowa instancja nie zostanie utworzona. W przeciwnym razie – jeśli istniejąca instancja aktywności "singleTop" znajduje się w zadaniu docelowym, ale nie znajduje się u góry stosu lub znajduje się na górze stosu, ale nie w zadaniu docelowym – zostanie utworzona i wypchnięta stos nowej instancji.

Podobnie, jeśli użytkownik przejdzie w górę do działania w bieżącym stosie, działanie jest określane przez tryb uruchamiania działania nadrzędnego. Jeśli działanie nadrzędne ma tryb uruchamiania singleTop (lub intencja up zawiera FLAG_ACTIVITY_CLEAR_TOP), intencja nadrzędna jest umieszczana na górze stosu, a jego stan jest zachowywany.

Intencja nawigacji jest odbierana przez metodę onNewIntent() aktywności nadrzędnej. Jeśli działanie nadrzędne ma tryb uruchamiania standard, a intencja up nie zawiera FLAG_ACTIVITY_CLEAR_TOP, bieżąca aktywność i jej aktywność nadrzędna wychodzą ze stosu, a tworzy się nowe wystąpienie działania nadrzędnego, które otrzymuje intencję nawigacji.

Tryb "singleInstance" różni się też od trybu "singleTask" i "singleInstancePerTask" tylko jednym aspektem: działanie w trybie uruchamiania "singleTask" lub "singleInstancePerTask" dopuszcza inne działania, koniecznie "standard" i "singleTop".

Z kolei aktywność "singleInstance" nie obejmuje żadnych innych działań. Musi to być jedyna aktywność w zadaniu. Jeśli uruchomi inne działanie, zostanie ono przypisane do innego zadania, tak jakby obiekt FLAG_ACTIVITY_NEW_TASK był w intencji.

Przykłady zastosowań Tryb uruchamiania Wiele instancji? Komentarze
Normalne uruchomienia w przypadku większości aktywności "standard" Tak Domyślny: System zawsze tworzy nowe wystąpienie działania w zadaniu docelowym i przekierowuje do niego intencję.
"singleTop" Warunkowo Jeśli wystąpienie działania już istnieje na początku zadania docelowego, system kieruje intencję do tej instancji przez wywołanie jej metody onNewIntent(), zamiast tworzyć nową instancję aktywności.
Premiery specjalistyczne
(niezalecane do użytku ogólnego)
"singleTask" Warunkowo System tworzy działanie u głównego zadania nowego zadania lub znajduje aktywność w istniejącym zadaniu o tej samej zainteresowaniach. Jeśli wystąpienie działania już istnieje i znajduje się w głównej części zadania, system przekierowuje intencję do istniejącej instancji za pomocą wywołania jej metody onNewIntent(), zamiast tworzyć nową.
"singleInstance" Nie Tak samo jak "singleTask" z tą różnicą, że system nie uruchamia żadnych innych działań w zadaniu zawierającym instancję. Działanie jest zawsze jedynym elementem zadania.
"singleInstancePerTask" Warunkowo Działanie może być uruchamiane tylko jako główne działanie, czyli pierwsze działanie, które spowodowało utworzenie zadania, i dlatego w zadaniu występuje tylko 1 jego wystąpienie. Działanie to można jednak utworzyć wiele razy w ramach różnych zadań.

Jak pokazano w poprzedniej tabeli, tryb domyślny to "standard". Jest on odpowiedni do większości rodzajów aktywności. "singleTop" to również typowy i przydatny tryb uruchamiania w przypadku wielu rodzajów działań. Pozostałe tryby ("singleTask", "singleInstance" i "singleInstancePerTask") nie nadają się do większości aplikacji. W efekcie powstaje model interakcji, który jest dla użytkowników nieznajomy i bardzo różni się od większości innych aplikacji.

Niezależnie od wybranego trybu uruchamiania przetestuj przydatność działania podczas uruchamiania oraz gdy wrócisz do niego z innych działań i zadań za pomocą przycisku Wstecz.

Więcej informacji o trybach uruchamiania i ich interakcjach z flagami Intent znajdziesz w artykule o Zadaniach i stosie wstecznym.

android:lockTaskMode
Określa, jak system prezentuje tę aktywność, gdy urządzenie działa w trybie blokady zadań.

Android pozwala uruchamiać zadania w bardzo realistyczny sposób, nazywany trybem blokady zadań. Gdy system działa w trybie blokady zadań, użytkownicy urządzeń zwykle nie widzą powiadomień, nie mają dostępu do aplikacji spoza listy dozwolonych i nie mogą wrócić do ekranu głównego, chyba że aplikacja Google Home znajduje się na liście dozwolonych.

Gdy system jest w trybie blokady zadań, mogą działać tylko aplikacje, które znajdują się na liście dozwolonych przez kontroler zasad dotyczących urządzeń (DPC). Jednak aplikacje systemowe i aplikacje z podwyższonymi uprawnieniami mogą działać w trybie zadań blokady bez umieszczenia ich na liście dozwolonych.

Wartość może być dowolną z tych wartości ciągu znaków R.attr.lockTaskMode:

Wartość Opis
"normal" Wartość domyślna. Jest to wartość domyślna. Zadania nie uruchamiają się w trybie blokady zadań, ale można je w nim umieścić, wywołując metodę startLockTask().
"never"

Zadania nie uruchamiają się w trybie lockTask, a użytkownik urządzenia nie może ich przypiąć na ekranie Ostatnie.

Uwaga: ten tryb jest dostępny tylko dla aplikacji systemowych i aplikacji z podwyższonymi uprawnieniami. Aplikacje bez uprawnień o tej wartości są traktowane jako normal.

"if_whitelisted" Jeśli DPC autoryzuje ten pakiet za pomocą polecenia DevicePolicyManager.setLockTaskPackages(), ten tryb będzie taki sam jak always, z tym że działanie musi wywołać stopLockTask(), zanim będzie można je ukończyć, jeśli jest to ostatnie zablokowane zadanie. Jeśli DPC nie autoryzuje tego pakietu, ten tryb będzie taki sam jak w trybie normal.
"always"

Zadania z wykorzystaniem tego działania są zawsze uruchamiane w trybie zadań blokady. Jeśli w momencie uruchomienia tego zadania system jest już w trybie blokowania zadań, nowe zadanie zostanie uruchomione nad bieżącym. Zadania uruchamiane w tym trybie mogą zamknąć tryb blokady zadań, wywołując metodę finish().

Uwaga: ten tryb jest dostępny tylko dla aplikacji systemowych i aplikacji z podwyższonymi uprawnieniami. Aplikacje bez uprawnień o tej wartości są traktowane jako normal.

Ten atrybut został wprowadzony na poziomie interfejsu API 23.

android:maxRecents
Maksymalna liczba zadań pochodzących z tego działania na ekranie Ostatnie. Po osiągnięciu tej liczby wpisów system usuwa z ekranu Ostatnie używane instancję. Prawidłowe wartości to liczby całkowite z zakresu od 1 do 50 lub od 1 do 25 w przypadku urządzeń z małą ilością pamięci. 0 jest nieprawidłowe. Wartością domyślną jest 16.
android:maxAspectRatio

Maksymalny format obrazu obsługiwany przez aktywność. Jeśli aplikacja działa na urządzeniu o większym współczynniku proporcji, system automatycznie dodaje do niej poziome pasy, a fragmenty ekranu są nieużywane, dzięki czemu aplikacja może działać w maksymalnym formacie obrazu.

Maksymalny współczynnik proporcji jest wyrażony jako iloraz ilorazu dłuższego wymiaru urządzenia i jego krótszego wymiaru. Jeśli na przykład maksymalny współczynnik proporcji to 7:3, ustaw wartość tego atrybutu na 2,33.

W przypadku urządzeń do noszenia wartość tego atrybutu musi wynosić 1, 33 lub więcej. Na urządzeniach do noszenia ta wartość musi wynosić 1, 0 lub nowsza. W przeciwnym razie system zignoruje ustawioną wartość.

Uwaga: Ten atrybut jest ignorowany, jeśli aktywność ma resizeableActivity wartość true (prawda), ponieważ oznacza to, że obsługuje ona dowolny rozmiar.

Więcej informacji o tym atrybucie znajdziesz w artykule Deklarowanie maksymalnego współczynnika proporcji.

android:multiprocess
Określenie, czy wystąpienie działania może zostać uruchomione w procesie komponentu, który je zainicjował. Jest to "true", jeśli może być, lub "false", jeśli może być. Wartością domyślną jest "false".

Normalnie nowe wystąpienie działania jest uruchamiane w ramach procesu aplikacji, w której je zdefiniowała, więc wszystkie jej wystąpienia są uruchamiane w ramach tego samego procesu. Jeśli jednak ta flaga jest ustawiona na "true", instancje działania mogą być uruchamiane w wielu procesach, co umożliwia systemowi tworzenie instancji w miejscach, w których są używane, a przyznawane uprawnienia pozwalają na tworzenie instancji. Jest to prawie nigdy nieistotne lub pożądane.

android:name
Nazwa klasy, która implementuje aktywność, czyli podklasa klasy Activity. Wartością atrybutu jest zwykle w pełni kwalifikowana nazwa klasy, np. "com.example.project.ExtracurricularActivity". Jeśli jednak pierwszy znak nazwy jest kropką, np. ".ExtracurricularActivity", jest on dodawany do przestrzeni nazw określonej w pliku build.gradle.

Po opublikowaniu aplikacji nie zmieniaj tej nazwy, chyba że ustawisz android:exported="false". Nie ma wartości domyślnej. Musisz podać nazwę.

android:noHistory
Określenie, czy działanie zostanie usunięte ze stosu aktywności i zakończone przez wywołanie metody finish(), gdy użytkownik opuści daną aktywność i przestanie być widoczna na ekranie. Ma wartość "true", jeśli zakończono, lub "false", jeśli nie. Wartością domyślną jest "false".

Wartość "true" oznacza, że aktywność nie zostawia śladów w historii. Nie pozostaje ono w stosie aktywności zadania, więc użytkownik nie może do niego wrócić. W takim przypadku funkcja onActivityResult() nigdy nie jest wywoływana, jeśli w wyniku tego działania rozpoczniesz inne działanie.

Ten atrybut został wprowadzony na poziomie interfejsu API 3.

android:parentActivityName
Nazwa klasy logicznego elementu nadrzędnego aktywności. Podana tutaj nazwa musi być identyczna z nazwą klasy nadanej odpowiedniemu atrybutowi android:name odpowiedniego elementu <activity>.

System odczytuje ten atrybut, aby określić działanie, które ma zostać uruchomione, gdy użytkownik naciśnie przycisk w górę na pasku działań. System może też użyć tych informacji do syntetyzowania stosu działań za pomocą funkcji TaskStackBuilder.

Aby obsługiwać poziomy interfejsu API 4–16, możesz również zadeklarować aktywność nadrzędną za pomocą elementu <meta-data>, który określa wartość "android.support.PARENT_ACTIVITY":

<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.app.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>

Więcej informacji o deklarowaniu aktywności nadrzędnej na potrzeby nawigacji w górę znajdziesz w artykule Udostępnianie nawigacji.

Ten atrybut został wprowadzony na poziomie interfejsu API 16.

android:persistableMode

Określa, w jaki sposób instancja aktywności jest zachowywana w ramach zadania zawierającego ją przy ponownym uruchomieniu urządzenia.

Jeśli główne działanie zadania ustawia wartość tego atrybutu na persistRootOnly, zostanie zachowana tylko aktywność główna. W przeciwnym razie badane są działania, które znajdują się wyżej w stosunku wstecznym zadania. Wszystkie działania, które ustawiają wartość tego atrybutu na persistAcrossReboots, są zachowywane.

Jeśli używasz tego atrybutu, musisz ustawić jego wartość na jedną z tych:

Wartość Opis
persistRootOnly

Wartość domyślna. Po ponownym uruchomieniu systemu zadanie związane z aktywnością jest zachowywane, ale używana jest tylko intencja uruchamiania aktywności głównej.

Gdy intencja uruchamiania aplikacji wczytuje aktywność główną aplikacji, działanie nie otrzymuje obiektu PersistableBundle. Dlatego nie używaj właściwości onSaveInstanceState() do zachowywania stanu aktywności głównej aplikacji po ponownym uruchomieniu urządzenia.

Uwaga: ta wartość atrybutu wpływa na działanie aplikacji tylko wtedy, gdy jest ustawiona w aktywności głównej aplikacji.

persistAcrossReboots

Stan tej aktywności wraz ze stanem każdej aktywności wyżej stosu wstecznego, który ma własny atrybut persistableMode ustawiony na persistAcrossReboots, jest zachowywany. Jeśli działanie nie ma atrybutu persistableMode ustawionego na persistAcrossReboots lub jeśli aktywność została uruchomiona za pomocą flagi Intent.FLAG_ACTIVITY_NEW_DOCUMENT, to działanie oraz wszystkie działania znajdujące się wyżej w stosie tylnym nie zostaną zachowane.

Gdy intencja wczytuje aktywność, której atrybut persistableMode jest ustawiony na persistAcrossReboots w aplikacji, działanie odbiera obiekt PersistableBundle w metodzie onCreate(). Dlatego możesz użyć onSaveInstanceState(), aby zachować stan aktywności po ponownym uruchomieniu urządzenia, dopóki jego atrybut persistableMode ma wartość persistAcrossReboots.

Uwaga: ta wartość atrybutu wpływa na działanie aplikacji nawet wtedy, gdy jest ustawiona w innym działaniu niż jej główne działanie.

persistNever

Stan aktywności nie jest zachowywany.

Uwaga: ta wartość atrybutu wpływa na działanie aplikacji tylko wtedy, gdy jest ustawiona w aktywności głównej aplikacji.

Ten atrybut został wprowadzony na poziomie interfejsu API 21.

android:permission
Nazwa uprawnienia, które musi mieć klient, aby uruchomić działanie lub w inny sposób zapewnić mu odpowiedź na intencję. Jeśli element wywołujący metodę startActivity() lub startActivityForResult() nie otrzyma określonego uprawnienia, intencja nie zostanie dostarczona do działania.

Jeśli ten atrybut nie jest skonfigurowany, do aktywności stosowane są uprawnienia ustawione przez atrybut <application> elementu permission. Jeśli żaden z tych atrybutów nie jest ustawiony, aktywność nie jest chroniona przez uprawnienie.

Więcej informacji o uprawnieniach znajdziesz w sekcji Uprawnienia w omówieniu pliku manifestu aplikacji i w Wskazówkach dotyczących bezpieczeństwa.

android:process

Nazwa procesu, w którym działa aktywność. Normalnie wszystkie komponenty aplikacji są uruchamiane w domyślnej nazwie procesu utworzonej dla aplikacji i nie trzeba używać tego atrybutu. Jeśli to konieczne, możesz zastąpić domyślną nazwę procesu tym atrybutem, aby rozłożyć komponenty aplikacji 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 w trakcie tego procesu jest wykonywana aktywność.

Jeśli nazwa procesu zaczyna się od małej litery, działanie jest uruchamiane w globalnym procesie o tej nazwie, o ile ma do tego uprawnienia. Dzięki temu komponenty w różnych aplikacjach korzystają z tego samego procesu, co zmniejsza wykorzystanie zasobów.

Atrybut process elementu <application> może ustawić inną domyślną nazwę procesu dla wszystkich komponentów.

android:relinquishTaskIdentity

Określa, czy aktywność przekazuje swoje identyfikatory zadań do działania nad nią w stosie zadań. Zadanie, którego aktywność główna ma ten atrybut ustawiony na "true", zastępuje podstawową aktywność Intent w następnym działaniu w zadaniu.

Jeśli kolejna aktywność również ma ten atrybut ustawiony na "true", dla każdej aktywności uruchamianej w tym samym zadaniu zwracana jest bazowa wartość Intent. Powtarza się w przypadku każdej aktywności, dopóki nie zostanie znalezione działanie o tym atrybucie ustawionym na "false". Wartością domyślną jest "false".

Ten atrybut ustawiony na "true" zezwala też na używanie elementu ActivityManager.TaskDescription przez aktywność do zmiany etykiet, kolorów i ikon na ekranie Ostatnie.

android:requireContentUriPermissionFromCaller

Określa uprawnienia niezbędne do uruchamiania tego działania podczas przekazywania identyfikatorów URI treści. Wartość domyślna to none, co oznacza, że nie są wymagane żadne konkretne uprawnienia. Ustawienie tego atrybutu ogranicza wywoływanie aktywności na podstawie uprawnień wywołującego. Jeśli wywołujący nie ma wymaganych uprawnień, rozpoczęcie działania będzie odrzucane za pomocą SecurityException .

Pamiętaj, że egzekwowanie działa w przypadku identyfikatorów URI treści wewnątrz Intent.getData(), Intent.EXTRA_STREAM i Intent.getClipData().

Może to być ciąg znaków zawierający znak „\\;” do zmiany znaczenia znaków, takich jak „\\n” lub „\\uxxxx” w przypadku znaku Unicode.

Musi to być jedna z podanych stałych wartości.

Stała Wartość Opis
brak 0 Domyślnie nie są wymagane żadne konkretne uprawnienia.
czytać 1 Wymusza uprawnienia wywołującego uprawnienia do odczytu przekazywanych identyfikatorów URI treści.
odczyti zapis 4 Wymusza wywołujący, aby miał dostęp zarówno do odczytu, jak i do zapisu w przekazywanych identyfikatorach URI treści.
ReadOrWrite (odczyt/zapis) 3 Wymusza na podstawie wywołującego uprawnienia dostępu do odczytu lub zapisu w przekazywanych identyfikatorach URI treści.
zapis 2 Wymusza na podstawie wywołującego uprawnienia dostępu do zapisu przekazywanych identyfikatorów URI treści.
android:resizeableActivity

Określa, czy aplikacja obsługuje tryb wielu okien. Ten atrybut możesz ustawić w elemencie <activity> lub <application>.

Jeśli ustawisz ten atrybut na wartość "true", użytkownik będzie mógł uruchamiać aktywność w trybach podzielonego ekranu i swobodnego wyświetlania. Jeśli ustawisz atrybut na wartość "false", nie będzie można przetestować aplikacji ani zoptymalizować jej pod kątem środowiska wielu okien. System może nadal przełączyć aktywność w tryb wielu okien z zastosowanym trybem zgodności.

Ustawienie tego atrybutu na wartość "false" nie gwarantuje, że na ekranie nie będą widoczne żadne inne aplikacje w trybie wielu okien, np. obraz w obrazie czy na innych wyświetlaczach. Dlatego ustawienie tej flagi nie oznacza, że aplikacja ma wyłączny dostęp do zasobów.

Jeśli Twoja aplikacja jest kierowana na interfejs API na poziomie 24 lub wyższym i nie określisz wartości tego atrybutu, domyślnie przyjęta zostanie wartość "true".

Jeśli Twoja aplikacja jest kierowana na interfejs API na poziomie 31 lub wyższym, ten atrybut działa inaczej na małych i dużych ekranach:

  • Duże ekrany (sw >= 600 dp): wszystkie aplikacje obsługują tryb wielu okien. Ten atrybut wskazuje, czy można zmienić rozmiar aplikacji, a nie czy obsługuje tryb wielu okien. Jeśli jest to resizeableActivity="false", aplikacja jest w razie potrzeby przełączana w tryb zgodności, aby dostosować się do wymiarów wyświetlania.
  • Małe ekrany (sw < 600 dp): jeśli resizeableActivity="true" oraz minimalna szerokość i minimalna wysokość aktywności spełniają wymagania dotyczące wielu okien, aplikacja obsługuje tryb wielu okien. Jeśli ustawiona jest wartość resizeableActivity="false", aplikacja nie obsługuje trybu wielu okien niezależnie od minimalnej szerokości i wysokości aktywności.

Uwaga: producenci urządzeń mogą zastąpić działanie na poziomie interfejsu API 31.

Ten atrybut został dodany na poziomie interfejsu API 24.

Uwaga: główna wartość aktywności zadania jest stosowana do wszystkich dodatkowych działań uruchamianych w tym zadaniu. Oznacza to, że jeśli główne działanie zadania można zmienić, system będzie traktować wszystkie pozostałe działania w zadaniu jako możliwe do zmiany rozmiaru. Jeśli nie można zmienić rozmiaru działania głównego, nie można zmienić rozmiaru pozostałych działań w zadaniu.

android:screenOrientation

Orientacja aktywności na wyświetlaczu urządzenia.

W Androidzie 7.0 (poziom interfejsu API 24) i nowszych system ignoruje zmiany w czasie działania tego atrybutu, jeśli aktywność działa w trybie wielu okien.

Na Androidzie 12 (poziom interfejsu API 31) i nowszych producenci urządzeń mogą skonfigurować ekrany poszczególnych urządzeń (na przykład w przypadku tabletów składanych) w taki sposób, aby ignorowały specyfikację orientacji i wymuszały, aby aplikacja określona jako pionowa była pionowa, ale z poziomymi pasami na ekranie poziomym. Dzięki temu aplikacja nadal ma pionowy format obrazu, a jej orientację jest bardziej przydatna.

Wartość może być dowolnym z tych ciągów:

"unspecified" Wartość domyślna. System wybiera orientację. Zasady, z których korzysta, a tym samym wybrane w konkretnych kontekstach opcje, mogą się różnić w zależności od urządzenia.
"behind" Ta sama orientacja co aktywność, która znajduje się tuż pod nią w stosie aktywności.
"landscape" Orientacja pozioma (wyświetlacz jest szerszy niż wysoki).
"portrait" Orientacja pionowa (wyświetlacz jest wyższy niż szerszy).
"reverseLandscape" Orientacja pozioma jest przeciwna do normalnego poziomego. Dodano na poziomie API 9.
"reversePortrait" Orientacja pionowa jest w kierunku przeciwnym do normalnej orientacji pionowej. Dodano na poziomie API 9.
"sensorLandscape" Orientacja pozioma, ale w zależności od czujnika urządzenia może być normalna lub odwrócona. Czujnik jest używany nawet wtedy, gdy użytkownik zablokował obrót oparty na czujniku. Dodano na poziomie API 9.
"sensorPortrait" Orientacja pionowa, ale w zależności od czujnika urządzenia może być normalna lub odwrócona. Czujnik jest używany nawet wtedy, gdy użytkownik zablokował obrót oparty na czujniku. W zależności od konfiguracji urządzenia obrót do góry nogami może być jednak niedozwolony. Dodano na poziomie API 9.
"userLandscape" Orientacja pozioma, ale w zależności od czujnika urządzenia i preferencji użytkownika może być normalna lub odwrócona. Dodano na poziomie API 18.
"userPortrait" Orientacja pionowa, ale może być normalna lub odwrotna, w zależności od czujnika urządzenia i preferencji użytkownika. Jednak w zależności od konfiguracji urządzenia obracanie do góry nogami może być niedozwolone. Dodano na poziomie API 18.
"sensor" Orientację urządzenia określa czujnik orientacji urządzenia. Orientacja wyświetlacza zależy od tego, jak użytkownik trzyma urządzenie. Zmienia się, gdy użytkownik obróci urządzenie. Niektóre urządzenia domyślnie nie obracają się jednak do wszystkich czterech możliwych orientacji. Aby użyć wszystkich 4 orientacji, użyj funkcji "fullSensor". Czujnik jest używany nawet wtedy, gdy użytkownik zablokował obrót oparty na czujniku.
"fullSensor" Czujnik orientacji urządzenia określa orientację dla każdej z 4 orientacji. Ta funkcja jest podobna do "sensor", z tą różnicą, że możesz użyć dowolnej z 4 orientacji ekranu, niezależnie od tego, jaka jest normalnie funkcja urządzenia. Na przykład niektóre urządzenia zwykle nie wyświetlają odwróconej orientacji pionowej ani poziomej, ale mogą to robić. Dodano na poziomie API 9.
"nosensor" Orientacja jest określana bez korzystania z czujnika orientacji fizycznej. Czujnik jest ignorowany, więc wyświetlacz nie obraca się w zależności od tego, jak użytkownik porusza urządzenie.
"user" Bieżąca preferowana orientacja użytkownika.
"fullUser" Jeśli użytkownik zablokował obrót oparty na czujnikach, działa to tak samo jak funkcja user. W przeciwnym razie działa tak samo jak w przypadku elementu fullSensor i dopuszcza dowolną z 4 możliwych orientacji ekranu. Dodano na poziomie API 18.
"locked" Blokuje orientację zgodnie z bieżącą rotacją. Dodano na poziomie interfejsu API 18.

Uwaga: zadeklarowanie jednej z wartości orientacji poziomej lub pionowej jest uważane za ścisłe wymaganie orientacji, w jakiej ma działać aktywność. Zadeklarowana wartość umożliwia filtrowanie według usług takich jak Google Play. Dzięki temu aplikacja jest dostępna tylko na urządzeniach, które obsługują orientację wymaganą przez Twoje aktywności. Jeśli na przykład zadeklarujesz "landscape", "reverseLandscape" lub "sensorLandscape", aplikacja będzie dostępna tylko na urządzeniach, które obsługują orientację poziomą.

Wyraźnie zadeklaruj, że aplikacja wymaga orientacji pionowej lub poziomej z elementem <uses-feature>, takim jak <uses-feature android:name="android.hardware.screen.portrait"/>. To sposób filtrowania dostępny w Google Play i innych usługach, które go obsługują. Sama platforma nie określa, czy aplikację można zainstalować, gdy urządzenie obsługuje tylko określone orientacje.

android:showForAllUsers

Określa, czy aktywność jest widoczna, gdy bieżący użytkownik urządzenia różni się od użytkownika, który uruchomił aktywność. Możesz ustawić ten atrybut na wartość literału, np. "true" lub "false", albo na atrybut zasobu lub motywu, który zawiera wartość logiczną.

Ten atrybut został dodany na poziomie interfejsu API 23.

android:stateNotNeeded
Określenie, czy można zakończyć i ponownie uruchomić aktywność bez zapisania jej stanu. Wartość to "true", jeśli można uruchomić ją ponownie bez odniesienia do poprzedniego stanu, lub "false", jeśli jest wymagany poprzedni stan. Wartością domyślną jest "false".

Standardowo, zanim działanie zostanie tymczasowo wyłączone w celu zapisania zasobów, wywoływana jest jej metoda onSaveInstanceState(). Ta metoda zapisuje bieżący stan aktywności w obiekcie Bundle, który jest następnie przekazywany do funkcji onCreate() przy ponownym uruchomieniu działania. Jeśli ten atrybut ma wartość "true", onSaveInstanceState() może nie zostać wywołany, a onCreate() jest przekazywany null zamiast Bundle, jak ma miejsce przy pierwszym uruchomieniu aktywności.

Ustawienie "true" oznacza, że aktywność można wznowić bez zachowania stanu. Na przykład aktywność, która wyświetla ekran główny, korzysta z tego ustawienia, aby mieć pewność, że nie zostanie usunięta, jeśli z jakiegoś powodu ulegnie awarii.

android:supportsPictureInPicture

Określa, czy aktywność obsługuje wyświetlanie obraz w obrazie.

android:taskAffinity

Zadanie, z którym aktywność jest powiązana. Działania o takim samym podobieństwie koncepcyjnie należą do tego samego zadania i do tej samej „aplikacji” z punktu widzenia użytkownika. Koligacja zadania określa się na podstawie koligacji jego głównego działania.

Koligacja określa 2 elementy: zadanie, do którego aktywność jest przypisywana ponownie jako rodzic (patrz atrybut allowTaskReparenting) oraz zadanie, w którym znajduje się aktywność po uruchomieniu z flagą FLAG_ACTIVITY_NEW_TASK.

Domyślnie wszystkie działania w aplikacji mają taką samą koligację. W tym atrybucie możesz grupować je w różny sposób, a nawet umieścić działania zdefiniowane w różnych aplikacjach w ramach jednego zadania. Aby określić, że aktywność nie ma koligacji dla żadnego zadania, ustaw dla niej pusty ciąg znaków.

Jeśli ten atrybut nie jest ustawiony, aktywność dziedziczy koligację ustawioną dla aplikacji. Zobacz atrybut taskAffinity elementu <application>. Nazwa domyślnej koligacji aplikacji to przestrzeń nazw ustawiona w pliku build.gradle.

android:theme
Odniesienie do zasobu stylu określającego ogólny motyw aktywności. Spowoduje to automatyczne ustawienie kontekstu aktywności w taki sposób, aby używał tego parametru theme, a także może spowodować rozpoczęcie odtwarzania animacji przed uruchomieniem, aby lepiej dopasować je do jej rzeczywistego wyglądu.

Jeśli ten atrybut nie jest ustawiony, aktywność dziedziczy motyw ustawiony dla całej aplikacji z atrybutu <application> elementu theme. Jeśli ten atrybut również nie jest skonfigurowany, używany jest domyślny motyw systemowy. Więcej informacji znajdziesz w artykule Style i motywy.

android:uiOptions

Dodatkowe opcje interfejsu użytkownika aktywności. Musi to być jedna z następujących wartości.

WartośćOpis
"none"Bez dodatkowych opcji interfejsu. Jest to ustawienie domyślne.
"splitActionBarWhenNarrow"Dodaje u dołu ekranu pasek pozwalający wyświetlać działania na pasku aplikacji (nazywanym też paskiem działań) w przypadku ograniczenia przestrzeni w poziomie, np. w trybie pionowym na telefonie. Na pasku aplikacji u góry ekranu zamiast niewielkiej liczby działań jest podzielony na górną i dolną sekcję nawigacji. Oznacza to, że jest dość miejsca nie tylko na działania, ale też na elementy nawigacyjne i tytuły u góry. Pozycje menu nie są podzielone na dwa słupki. Zawsze pojawiają się razem.

Więcej informacji o pasku aplikacji znajdziesz w artykule Dodawanie paska aplikacji.

Ten atrybut został dodany na poziomie interfejsu API 14.

android:windowSoftInputMode
Jak główne okno aktywności wchodzi w interakcję z oknem zawierającym ekranową klawiaturę programową. Ustawienie tego atrybutu ma wpływ na 2 kwestie:
  • Określa, czy klawiatura ekranowa jest ukryta czy widoczna, gdy użytkownik gromadzi uwagę użytkownika.
  • Określa, czy zmniejszyć główne okno aktywności, aby zwolnić miejsce na klawiaturę programową czy jej zawartość, tak aby bieżący fokus był widoczny, gdy część okna jest zakryta przez klawiaturę programową.

Ustawieniem musi być jedna z wartości wymienionych w tabeli poniżej lub połączenie 1 wartości "state..." i 1 wartości "adjust...". Ustawienie wielu wartości w dowolnej grupie, na przykład kilku wartości "state...", daje niezdefiniowane wyniki. Poszczególne wartości są rozdzielone pionową kreską (|), jak w tym przykładzie:

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

Wartości ustawione tutaj (inne niż "stateUnspecified" i "adjustUnspecified") zastępują wartości ustawione w motywie.

Wartość Opis
"stateUnspecified" Nie określono, czy klawiatura ekranowa jest ukryta, czy widoczna. System wybiera odpowiedni stan lub polega na ustawieniu w motywie.

Jest to domyślne ustawienie działania klawiatury programowej.

"stateUnchanged" Klawiatura programowa jest zachowywana w ostatnim stanie, w jakim była widoczna lub ukryta w chwili, gdy działanie pojawi się na pierwszym planie.
"stateHidden" Klawiatura programowa jest ukryta, gdy użytkownik wybierze działanie, czyli gdy użytkownik świadomie przejdzie do działania, a nie wróci do niego, gdy opuszcza inne działanie.
"stateAlwaysHidden" Klawiatura programowa jest zawsze ukryta, gdy w głównym oknie aktywności jest zaznaczona opcja wprowadzania.
"stateVisible" Klawiatura programowa jest widoczna, gdy użytkownik wybierze działanie, czyli przejdzie do działania, a nie wstecz, wykonując inną czynność.
"stateAlwaysVisible" Klawiatura programowa jest widoczna, gdy okno zostanie zaznaczone.
"adjustUnspecified" Nie określono, czy rozmiar głównego okna aktywności zostanie zmieniony, aby zrobić miejsce na klawiaturę ekranową, czy zawartość przesunięcia okna w taki sposób, aby bieżący fokus był widoczny na ekranie. System automatycznie wybiera jeden z tych trybów w zależności od tego, czy zawartość okna ma widoki układu, które można przewijać. W przypadku takiego widoku okno zmienia rozmiar, zakładając, że przewijanie może spowodować, że cała zawartość okna będzie widoczna z mniejszego obszaru.

Jest to domyślne ustawienie zachowania okna głównego.

"adjustResize" Rozmiar głównego okna aktywności jest zawsze zmieniany, aby zrobić miejsce na klawiaturę programową na ekranie.
"adjustPan" Rozmiar głównego okna aktywności nie jest zmieniany, aby zwolnić miejsce na klawiaturę programową. Zawartość okna jest przesuwana automatycznie, dzięki czemu fokus nigdy nie jest zasłonięty przez klawiaturę, a użytkownicy zawsze widzą, co wpisują. Jest to zwykle mniej pożądane niż zmiana rozmiaru, ponieważ użytkownik może być zmuszony zamknąć klawiaturę programową, aby uzyskać dostęp do zasłoniętych części okna i wykonać z nimi interakcję.

Ten atrybut został wprowadzony na poziomie interfejsu API 3.

wprowadzone w:
Poziom API 1 dla wszystkich atrybutów z wyjątkiem noHistory i windowSoftInputMode, które zostały dodane na poziomie interfejsu API 3.
zobacz też:
<application>
<activity-alias>