<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:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale",
                                 "uiMode", "orientation", "density",
                                 "screenSize", "smallestScreenSize"]
          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: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>
może zawierać:
<intent-filter>
<meta-data>
<layout>
description:
Deklaruje działanie (podklasa Activity), która implementuje część wizualnego interfejsu aplikacji. Wszystkie działania muszą być reprezentowane przez elementy <activity> w pliku manifestu. Wszystko, co nie zostało zadeklarowane, nie jest widoczne dla systemu i nigdy nie jest uruchamiane.
atrybuty:
android:allowEmbedded
Wskazuje, że aktywność może być uruchamiana jako element podrzędny innej aktywności, zwłaszcza w przypadku, gdy dziecko znajduje się w kontenerze, np. w kontenerze Display należącym do innej aktywności. Na przykład aktywności wykorzystywane w niestandardowych powiadomieniach dotyczących Wear deklarują to, więc Wear może wyświetlić aktywność w swoim strumieniu kontekstu, który znajduje się w innym procesie.

Wartość domyślna tego atrybutu to false.

android:allowTaskReparenting
Czy aktywność może zostać przeniesiona z zadania, które je rozpoczęło, do zadania, do którego jest zbieżne, gdy zostanie ono przeniesione na wierzch. To "true", jeśli można przenieść, i "false", jeśli pozostaje w zadaniu, od którego zostało rozpoczęte.

Jeśli ten atrybut nie zostanie ustawiony, do aktywności zostanie zastosowana wartość ustawiona przez odpowiedni atrybut allowTaskReparenting w elemencie <application>. Wartością domyślną jest "false".

Zazwyczaj rozpoczęcie działania jest powiązane z zadaniem, które je rozpoczęło, i pozostaje tam przez cały czas. Możesz użyć tego atrybutu, aby wymusić jego ponowne przypisanie do zadania, do którego ma koligację, gdy bieżące zadanie nie jest już wyświetlane. Zwykle powoduje to przeniesienie działań aplikacji do powiązanego z nią głównego zadania.

Jeśli na przykład e-mail zawiera link do strony internetowej, jego kliknięcie spowoduje wyświetlenie działania, które może wyświetlić tę stronę. Aktywność ta jest określana przez aplikację przeglądarki, ale jest uruchamiana w ramach zadania wysyłania e-maili. Jeśli to zadanie przeglądarki pojawi się ponownie w zadaniu przeglądarki, będzie widoczne, gdy następnym razem przejdzie na poprzedni ekran. W takim przypadku będzie go brakowało, gdy to zadanie pojawi się ponownie.

Koligacja działania jest określana przez atrybut taskAffinity. Koligacja zadania jest określana na podstawie odczytu koligacji jej głównej aktywności. Dlatego z definicji aktywność na poziomie głównym jest zawsze powiązana z zadaniem o tym samym podobieństwie. Działania z trybem uruchamiania "singleTask" lub "singleInstance" mogą znajdować się tylko u głównej części zadania, dlatego ponowne uczenie się nadzoru rodzicielskiego jest ograniczone do trybów "standard" i "singleTop". Zobacz też atrybut launchMode.

android:alwaysRetainTaskState
Czy system zawsze utrzymuje stan zadania, w którym znajduje się dana aktywność. "true" oraz "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 przypadku głównej aktywności zadania. Jest ignorowana w przypadku pozostałych działań.

Zwykle system czyści zadanie, usuwając wszystkie aktywności ze stosu nad aktywnością główną, w niektórych sytuacjach, gdy użytkownik ponownie wybierze to zadanie na ekranie głównym. Zwykle dzieje się tak, gdy użytkownik nie przeglądał zadania przez określony czas, np. 30 minut.

Jednak gdy ten atrybut to "true", użytkownicy zawsze wracają do zadania w ostatnim stanie, niezależnie od tego, jak do niego dotarli. Przydaje się to w aplikacjach takich jak przeglądarka, w których jest dużo stanu, np. wiele otwartych kart, których użytkownicy nie chcą stracić.

android:autoRemoveFromRecents
Określa, czy zadania uruchomione przez aktywność z tym atrybutem pozostaną na ekranie Ostatnie do momentu zakończenia ostatniej aktywności w zadaniu. Jeśli true, zadanie jest automatycznie usuwane z ekranu Ostatnie. Spowoduje to zastąpienie użycia funkcji FLAG_ACTIVITY_RETAIN_IN_RECENTS przez element wywołujący. Musi to być wartość logiczna "true" lub "false".
android:banner
Zasób rysowalny, który zawiera rozszerzony baner graficzny dla powiązanego elementu. Używaj razem z tagiem <activity>, aby dostarczać domyślny baner dla konkretnej aktywności, lub z tagiem <application>, aby dostarczać baner dla wszystkich aktywności w aplikacji.

Baner reprezentuje aplikację na ekranie głównym Androida TV. Baner wyświetla się tylko na ekranie głównym, więc jest określany tylko przez aplikacje z działaniem obsługującym intencję CATEGORY_LEANBACK_LAUNCHER.

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

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

android:clearTaskOnLaunch
Czy po ponownym uruchomieniu zadania z ekranu głównego zostaną usunięte wszystkie aktywności oprócz tej na poziomie głównym. "true", jeśli zadanie jest zawsze ograniczone do aktywności głównej, lub "false", jeśli nie jest. 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.

Gdy wartość to "true", za każdym razem, gdy użytkownik rozpoczyna zadanie, zostaje przekierowany do jego poziomu głównego, niezależnie od tego, co ostatnio robili w danym zadaniu, i niezależnie od tego, czy użytkownik opuścił je za pomocą przycisku Wstecz czy przycisku strony głównej. Gdy wartością jest "false", w niektórych sytuacjach, ale nie zawsze, można usunąć zadanie. Więcej informacji znajdziesz w atrybucie alwaysRetainTaskState.

Załóżmy, że użytkownik uruchamia aktywność P z ekranu głównego, a potem przechodzi do działania Q. Następnie klika przycisk strony głównej, a potem wraca do aktywności P. Normalnie użytkownik widzi aktywność Q, ponieważ to ona ostatnio zrobiła w zadaniu P. Jeśli jednak ustawisz tę flagę na "true", wszystkie znajdujące się na niej aktywności (w tym przypadku Q) zostaną usunięte, gdy użytkownik uruchomi aktywność P na ekranie głównym. W efekcie po powrocie do zadania użytkownik zobaczy tylko P.

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

Jeśli atrybut FLAG_ACTIVITY_RESET_TASK_IF_NEEDED nie jest skonfigurowany, ten atrybut jest ignorowany.

android:colorMode

Określa tryb kolorów aktywności. Jeśli podasz wartość, może być to hdr lub wideColorGamut.

Jeśli hdr, żąda, aby aktywność była wyświetlana w wysokim zakresie dynamicznym, o ile urządzenie go obsługuje.

Jeśli wideColorGamut, żąda, aby aktywność była wyświetlana 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 wyświetlać bardziej żywe kolory. Jeśli urządzenie nie obsługuje renderowania w szerokiej gamie kolorów, ten atrybut nie ma żadnego efektu. Więcej informacji o renderowaniu w trybie szerokiego koloru znajdziesz w artykule o ulepszaniu grafiki za pomocą treści o szerokich kolorach.

android:configChanges
Zawiera listę zmian w konfiguracji obsługiwanych przez aktywność. Gdy zmiana konfiguracji następuje w czasie działania, działanie domyślnie wyłącza się i uruchamia ponownie, ale zadeklarowanie konfiguracji z tym atrybutem uniemożliwia ponowne uruchomienie aktywności. Aktywność pozostanie uruchomiona, a jej metoda onConfigurationChanged() zostanie wywołana.

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

Podane niżej ciągi to prawidłowe wartości tego atrybutu. Wiele wartości jest rozdzielonych znakiem |, np. "locale|navigation|orientation".

Wartość Opis
"density" Zmiana gęstości wyświetlania, np. gdy użytkownik wybierze inną skalę wyświetlania lub włączy się inny wyświetlacz.

Dodano w interfejsie API na poziomie 24.

"fontScale" zmiana współczynnika skalowania czcionki, np. wybranie przez użytkownika nowego globalnego rozmiaru czcionki.
"keyboard" Zmiana typu klawiatury, na przykład po podłączeniu przez użytkownika klawiatury zewnętrznej.
"keyboardHidden" Zmiana w ułatwieniach dostępu z klawiatury, na przykład po odkryciu 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 w interfejsie API na poziomie 17.

"locale" Zmiana języka, na przykład wybranie przez użytkownika nowego języka, w którym wyświetla się tekst.
"mcc" Zmiana kodu kraju numeru IMSI w sieci komórkowej (MCK) po wykryciu karty SIM, która aktualizuje konto MCK.
"mnc" Zmiana kodu IMSI sieci komórkowej (MNC) po wykryciu karty SIM, która aktualizuje MNC.
"navigation" Zmiana funkcji nawigacji na rodzaj nawigacji (kulka lub pad kierunkowy). To normalne.
"orientation"

Zmiana orientacji ekranu, np. gdy użytkownik obróci urządzenie.

Uwaga: jeśli Twoja aplikacja jest kierowana na Androida 3.2 (poziom interfejsu API 13) lub nowszego, zadeklaruj też konfigurację "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" zmianę układu ekranu, np. aktywowanie innego wyświetlacza.
"screenSize" Zmiana obecnie dostępnego rozmiaru ekranu.

Ta wartość odzwierciedla zmianę obecnie dostępnego rozmiaru w stosunku do bieżącego formatu obrazu, która zmienia się, gdy użytkownik przełącza orientację między pionową a poziomą.

Dodano w interfejsie API na poziomie 13.

"smallestScreenSize" Zmiana rozmiaru ekranu.

Jest to zmiana rozmiaru bez względu na orientację, więc zmienia się tylko wtedy, gdy zmieni się rzeczywisty rozmiar ekranu, na przykład przełączysz się na wyświetlacz zewnętrzny. Zmiana tej konfiguracji odpowiada zmianie w konfiguracji smallestWidth.

Dodano w interfejsie API na poziomie 13.

"touchscreen" Zmiana dotycząca ekranu dotykowego. To normalne.
"uiMode" zmiana trybu interfejsu, na przykład położenie urządzenia na biurku lub samochodowej stacji dokującej albo po zmianie trybu nocnego; Więcej informacji o różnych trybach interfejsu znajdziesz w sekcji UiModeManager.

Dodano w interfejsie API na poziomie 8.

Wszystkie te zmiany konfiguracji mogą wpływać na wartości zasobów widoczne dla aplikacji. Dlatego po wywołaniu funkcji onConfigurationChanged() trzeba zwykle ponownie pobrać wszystkie zasoby, w tym układy widoków i elementy rysowane, by prawidłowo obsłużyć zmianę.

Uwaga: aby wprowadzić zmiany w konfiguracji związane z wieloma oknami, użyj zarówno "screenLayout", jak i "smallestScreenSize". Tryb wielu okien jest obsługiwany na urządzeniach z Androidem 7.0 (poziom interfejsu API 24) i nowszym.

android:directBootAware

Określa, czy aktywność ma charakter bezpośredniego rozruchu, czyli czy może działać, zanim użytkownik odblokuje urządzenie.

Uwaga: w trakcie rozruchu bezpośredniego aktywność w aplikacji ma dostęp tylko do danych przechowywanych w pamięci chronionej.

Wartość domyślna to "false".

android:documentLaunchMode
Określa sposób dodawania nowej instancji aktywności do zadania przy każdym jego uruchomieniu. Dzięki temu atrybutowi użytkownik może wyświetlać wiele dokumentów z tej samej aplikacji na ekranie Ostatnie.

Ten atrybut ma 4 wartości, które dają następujące efekty, gdy użytkownik otworzy dokument w aplikacji:

Wartość Opis
"intoExisting" System wyszukuje zadanie, którego atrybuty ComponentName intencji podstawowej i identyfikator URI danych odpowiadają tym w intencji uruchamiania. Jeśli system znajdzie takie zadanie, usunie je i uruchomi ponownie, a aktywność na poziomie głównym otrzyma wywołanie onNewIntent(android.content.Intent). Jeśli system nie znajdzie odpowiedniego zadania, utworzy nowe zadanie.
"always" Spowoduje to utworzenie nowego zadania w dokumencie, nawet jeśli dokument jest już otwarty. Odpowiada to ustawianiu zarówno flagi FLAG_ACTIVITY_NEW_DOCUMENT, jak i FLAG_ACTIVITY_MULTIPLE_TASK.
"none" Aktywność nie powoduje utworzenia nowego zadania. To jest wartość domyślna, która tworzy nowe zadanie tylko wtedy, gdy ustawiona jest wartość FLAG_ACTIVITY_NEW_TASK. Na ekranie Ostatnie działanie jest domyślnie traktowane tak samo jak dotychczas: wyświetlane jest jedno zadanie dla aplikacji, które jest wznawiane na podstawie aktywności wywoływanej przez użytkownika jako ostatnia.
"never" Aktywność nie jest uruchamiana w nowym dokumencie, nawet jeśli intencja zawiera ciąg FLAG_ACTIVITY_NEW_DOCUMENT. Ta opcja zastępuje zachowanie 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 wywołanej ostatnio przez użytkownika.

Uwaga: w przypadku wartości innych niż "none" i "never" aktywność jest definiowana przez parametr launchMode="standard". Jeśli ten atrybut nie zostanie określony, używany jest documentLaunchMode="none".

android:enabled
Czy system może utworzyć instancję aktywności. 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 działań. Aby system mógł utworzyć wystąpienie aktywności, zarówno atrybuty <application>, jak i <activity> muszą mieć wartość "true", ponieważ oba mają wartość domyślną. Jeśli dowolną z tych wartości jest "false", nie można utworzyć jego instancji.

android:enableOnBackInvokedCallback
Ta flaga pozwala włączyć przewidywanie animacji systemu na poziomie aktywności. Takie działanie ułatwia przeniesienie dużych aplikacji obsługujących wiele aktywności do przewidywania gestów wstecznych.

Ustawienie android:enableOnBackInvokedCallback=false wyłącza animacje przewidywanego przejścia wstecz na poziomie aktywności lub aplikacji w zależności od tego, gdzie został ustawiony tag oraz instruuje system, aby ignorował wywołania interfejsu API platformy OnBackInvokedCallback.

android:excludeFromRecents
Określa, czy zadanie zainicjowane przez tę aktywność jest wykluczone z ekranu Ostatnie. Gdy to działanie jest główną aktywnością nowego zadania, ten atrybut określa, czy 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
Czy aktywność może być uruchamiana przez komponenty innych aplikacji:

  • Jeśli "true", aktywność jest dostępna dla każdej aplikacji i uruchamiana za pomocą dokładnej nazwy klasy.
  • Jeśli "false", działanie mogą być uruchamiane tylko przez komponenty tej samej aplikacji, aplikacje o tym samym identyfikatorze użytkownika lub komponenty systemu z podwyższonymi uprawnieniami. Jest to wartość domyślna, gdy nie ma filtrów intencji.

Jeśli aktywność w Twojej aplikacji zawiera filtry intencji, ustaw ten element na "true", aby umożliwić innym aplikacjom uruchamianie tego elementu. Jeśli np. jest to główne działanie w aplikacji i zawiera category android.intent.category.LAUNCHER.

Jeśli ten element jest ustawiony na "false", a aplikacja próbuje uruchomić działanie, system zgłasza ActivityNotFoundException.

Ten atrybut nie jest jedynym sposobem ograniczenia ekspozycji aktywności na inne aplikacje. Uprawnienia służą też do ograniczania jednostek zewnętrznych, które mogą wywoływać to działanie. Zobacz atrybut permission.

android:finishOnTaskLaunch
Niezależnie od tego, czy istniejąca instancja aktywności zostanie wyłączona (z wyjątkiem aktywności root), gdy użytkownik uruchomi je ponownie, wybierając je na ekranie głównym. 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 allowTaskReparenting mają wartość "true", ten atrybut jest nadrzędny. Koligacja aktywności jest ignorowana. Aktywność nie zostaje ponownie nadrzędna, ale zostaje zniszczona.

Jeśli atrybut FLAG_ACTIVITY_RESET_TASK_IF_NEEDED nie jest skonfigurowany, ten atrybut jest ignorowany.

android:hardwareAccelerated
Wskazuje, czy w przypadku tego działania włączono akcelerację sprzętową renderowania. "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 akceleracji sprzętowej mechanizmu renderowania OpenGL, który zwiększa wydajność wielu typowych operacji graficznych 2D. Gdy włączony jest mechanizm renderowania z akceleracją sprzętową, większość operacji w Canvas, Paint, Xfermode, ColorFilter, Shader i w kamerze jest przyspieszana.

Zapewnia to płynniejsze animacje, płynniejsze przewijanie i ogólną poprawę reakcji nawet w przypadku aplikacji, które nie korzystają bezpośrednio z bibliotek OpenGL platformy. Aplikacja zużywa więcej pamięci RAM, ze względu na większe zasoby wymagane do obsługi akceleracji sprzętowej.

Nie wszystkie operacje OpenGL 2D są przyspieszone. Jeśli włączysz mechanizm renderowania z akceleracją sprzętową, sprawdź, czy aplikacja może go używać bez błędów.

android:icon
Ikona przedstawiająca aktywność. Ikona wyświetla się, gdy na ekranie wymagana jest reprezentacja aktywności. Na przykład ikony działań inicjujących zadania są wyświetlane w oknie programu uruchamiającego. Obok ikony często towarzyszy etykieta. Więcej informacji na jej temat można znaleźć w atrybucie android:label.

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. Więcej informacji znajdziesz w atrybucie icon elementu <application>.

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

android:immersive
Ustawia ustawienie trybu pojemnego dla bieżącej aktywności. Jeśli jest to "true", element ActivityInfo.flags ma zawsze ustawiony bit FLAG_IMMERSIVE nawet wtedy, gdy tryb pojemny zmieni się w czasie działania za pomocą metody setImmersive().
android:label
Czytelna dla użytkownika etykieta działania. Etykieta wyświetla się na ekranie, gdy aktywność jest reprezentowana użytkownikowi. Często wyświetla się obok ikony aktywności. Jeśli ten atrybut nie jest ustawiony, używana jest etykieta ustawiona dla całej aplikacji. Patrz atrybut label elementu <application>.

Etykieta aktywności, ustawiana tutaj lub przez element <application>, jest też domyślną etykietą wszystkich filtrów intencji działania. Więcej informacji znajdziesz w atrybucie 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:launchMode
Instrukcja uruchamiania aktywności. Istnieje 5 trybów, które działają w połączeniu z flagami aktywności (stałymi FLAG_ACTIVITY_*) w obiektach Intent i określają, co się dzieje, gdy działanie jest wywoływane w celu obsługi intencji:

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

Domyślnym trybem jest "standard".

Jak widać w tabeli poniżej, tryby dzielą się na 2 główne grupy: po jednej stronie aktywności "standard" i "singleTop" oraz "singleTask", "singleInstance" i "singleInstancePerTask" po drugiej. Wystąpienie działania w trybie uruchamiania "standard" lub "singleTop" może być tworzone wiele razy.

Instancje mogą należeć do dowolnego zadania i można je umieścić w dowolnym miejscu zadania związanego z aktywnością. Zwykle użytkownik jest uruchamiany w zadaniu o nazwie startActivity(), chyba że obiekt Intent zawiera instrukcję FLAG_ACTIVITY_NEW_TASK, co powoduje wybranie innego zadania. Więcej informacji znajdziesz w artykule o atrybucie taskAffinity.

Aktywności "singleTask", "singleInstance" i "singleInstancePerTask" działają natomiast w różny sposób. Pole "singleInstancePerTask" zawsze znajduje się w głównej części zadania związanego z aktywnością. Poza tym na urządzeniu może w danym momencie przechowywać tylko 1 wystąpienie aktywności "singleInstance". Jeśli skonfigurowana jest zasada FLAG_ACTIVITY_MULTIPLE_TASK lub FLAG_ACTIVITY_NEW_DOCUMENT, aktywność "singleInstancePerTask może być inicjowana wiele razy w różnych zadaniach.

Aktywność w trybie uruchamiania "singleTask" łączy zasady działania "singleInstance" i "singleInstancePerTask": można ją utworzyć wiele razy i znajdować się w dowolnym miejscu w zadaniu tego samego obiektu taskAffinity. Urządzenie może jednak zapisać tylko 1 zadanie, które pozwala znaleźć aktywność "singleTask" na poziomie głównym zadania.

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

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

I podobnie, jeśli użytkownik przejdzie do działania na bieżącym stosie, działanie jest określane przez tryb uruchamiania tej aktywności nadrzędnej. Jeśli aktywność nadrzędna ma tryb uruchamiania singleTop (lub intencja up zawiera FLAG_ACTIVITY_CLEAR_TOP), element nadrzędny jest wyświetlany na początku stosu, a jego stan jest zachowywany.

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

Tryb "singleInstance" różni się też od "singleTask" i "singleInstancePerTask" tylko pod jednym względem: aktywność w trybie uruchamiania "singleTask" lub "singleInstancePerTask" pozwala na udział w zadaniu przez inne działania, np. "standard" i "singleTop".

Natomiast działanie "singleInstance" nie zezwala na uwzględnienie żadnych innych działań. Musi to być jedyna aktywność w zadaniu. Jeśli rozpocznie inne działanie, zostanie ono przypisane do innego zadania, tak jakby działanie FLAG_ACTIVITY_NEW_TASK było w intencji.

Przykłady zastosowań Tryb uruchamiania Wiele instancji? Komentarze
Normalne uruchomienie większości aktywności "standard" Tak Domyślny: System zawsze tworzy nową instancję działania w zadaniu docelowym i przekierowuje do niego intencję.
"singleTop" Warunkowo Jeśli wystąpienie działania już istnieje na górze zadania docelowego, system przekierowuje intencję do tej instancji przez wywołanie metody onNewIntent(), zamiast tworzyć nowe wystąpienie aktywności.
Wprowadzenie na rynek specjalistyczny
(niezalecane do użytku ogólnego)
"singleTask" Warunkowo System tworzy aktywność na poziomie głównym nowego zadania lub znajduje aktywność w istniejącym zadaniu z tym samym podobieństwem. Jeśli instancja działania już istnieje i znajduje się w głównej części zadania, system przekierowuje intencję do istniejącej instancji przez wywołanie metody onNewIntent(), zamiast tworzyć nową instancję.
"singleInstance" Nie Tak samo jak w przypadku "singleTask" z tą różnicą, że system nie uruchamia żadnych innych działań w zadaniu, w którym znajduje się instancja. Aktywność jest zawsze jednym i jedynym członkiem swojego zadania.
"singleInstancePerTask" Warunkowo Aktywność może być uruchamiana tylko jako główna aktywność zadania, czyli pierwsza aktywność, która utworzyła zadanie. Dlatego w zadaniu występuje tylko 1 jego wystąpienie. Wystąpienie aktywności może być jednak utworzone kilka razy w ramach różnych zadań.

Jak pokazano w poprzedniej tabeli, trybem domyślnym jest "standard", który jest odpowiedni do większości typów działań. "singleTop" jest też typowym i przydatnym trybem uruchamiania w przypadku wielu rodzajów działań. Pozostałe tryby, "singleTask", "singleInstance" i "singleInstancePerTask", nie są odpowiednie do większości aplikacji. Powodują one model interakcji, który jest prawdopodobnie nieznany użytkownikom i bardzo różni się od większości innych aplikacji.

Niezależnie od wybranego trybu uruchamiania pamiętaj, aby przetestować użyteczność działania podczas uruchamiania i przy wracaniu do niego z innych działań i zadań za pomocą przycisku Wstecz.

Więcej informacji o trybach uruchamiania i ich interakcji z flagami Intent znajdziesz w artykule na temat zadań i stosu wstecznego.

android:lockTaskMode
Określa, w jaki sposób system przedstawia tę aktywność, gdy urządzenie działa w trybie blokowania zadań.

Android umożliwia uruchamianie zadań w rzeczywistym trybie kiosku nazywanym trybem blokowania zadań. Gdy system działa w trybie blokady, użytkownicy urządzeń zazwyczaj nie widzą powiadomień, nie mają dostępu do aplikacji spoza listy dozwolonych ani nie mogą wrócić do ekranu głównego, chyba że aplikacja Home znajduje się na liście dozwolonych.

Gdy system jest w trybie zadań blokowania, można uruchamiać tylko aplikacje znajdujące się na liście dozwolonych przez kontroler zasad dotyczących urządzeń (DPC). Aplikacje systemowe i aplikacje z uprawnieniami mogą jednak działać w trybie blokowania zadań i nie znajdować się 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, ale można je tam umieścić, wywołując metodę startLockTask().
"never"

Lista zadań nie uruchamia się w trybie lockTask, a użytkownik urządzenia nie może ich przypiąć na ekranie Ostatnie.

Uwaga: ten tryb jest dostępny tylko w przypadku aplikacji systemowych i aplikacji z uprawnieniami. Aplikacje bez uprawnień z tą wartością są traktowane jako normal.

"if_whitelisted" Jeśli DPC autoryzuje pakiet za pomocą DevicePolicyManager.setLockTaskPackages(), ten tryb jest taki sam jak tryb always. Jedyna różnica jest taka, że przed zakończeniem działania działanie musi wywołać stopLockTask(), zanim będzie można je zakończyć, jeśli jest to ostatnie zablokowane zadanie. Jeśli DPC nie autoryzuje tego pakietu, ten tryb jest taki sam jak normal.
"always"

Zadania z dostępem do roota w ramach tej aktywności zawsze uruchamiają się w trybie blokady zadań. Jeśli w momencie uruchamiania tego zadania system jest w trybie blokady, nowe zadanie jest uruchamiane w związku z bieżącym. Zadania uruchamiane w tym trybie mogą wyjść z trybu blokady, wywołując metodę finish().

Uwaga: ten tryb jest dostępny tylko w przypadku aplikacji systemowych i aplikacji z uprawnieniami. Aplikacje bez uprawnień z tą wartością są traktowane jako normal.

Ten atrybut został wprowadzony na poziomie API 23.

android:maxRecents
Maksymalna liczba działań powiązanych z tą aktywnością na ekranie Ostatnie. Po osiągnięciu tej liczby wpisów system usuwa najrzadziej używaną instancję z ekranu Ostatnie. 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. Zero 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 szerszym współczynniku proporcji, system automatycznie oznaczy ją czarnymi pasami i pozostaw nieużywane fragmenty ekranu, aby aplikacja mogła działać z określonym maksymalnym formatem obrazu.

Maksymalny współczynnik proporcji to iloraz dłuższego wymiaru urządzenia podzielonego przez krótszy wymiar dziesiętny. Jeśli np.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ć co najmniej 1, 33. Na urządzeniach do noszenia musi to być wersja 1.0 lub nowsza. W przeciwnym razie system ignoruje ustawioną wartość.

Uwaga: ten atrybut jest ignorowany, jeśli aktywność resizeableActivity ma wartość Prawda, ponieważ oznacza to, że aktywność obsługuje dowolny rozmiar.

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

android:multiprocess
Czy wystąpienie działania można uruchomić w procesie komponentu, który je uruchomił. To "true", jeśli może, lub "false", jeśli nie. Wartością domyślną jest "false".

Normalnie nowe wystąpienie działania jest uruchamiane w procesie aplikacji, która je zdefiniowała, więc wszystkie jego instancje działają w tym samym procesie. Jeśli jednak ta flaga jest ustawiona na "true", wystąpienia działania mogą być uruchamiane w wielu procesach, co umożliwia systemowi tworzenie instancji niezależnie od tego, gdzie są używane, o ile zezwalają na to uprawnienia – co prawie nigdy nie jest konieczne ani pożądane.

android:name
Nazwa klasy, która implementuje działanie – podklasa Activity. Wartość atrybutu jest zwykle w pełni kwalifikowaną nazwą klasy, np. "com.example.project.ExtracurricularActivity". W skrócie, jeśli pierwszym znakiem nazwy jest kropka, np. ".ExtracurricularActivity", jest on dodawany do przestrzeni nazw podanej w pliku build.gradle.

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

android:noHistory
Czy aktywność zostanie usunięta ze stosu aktywności i zakończona przez wywołanie jej metody finish(), gdy użytkownik ją opuści i nie będzie już widoczna na ekranie. "true", jeśli proces się zakończył, lub "false", jeśli nie. Wartością domyślną jest "false".

Wartość "true" oznacza, że aktywność nie pozostawia po sobie żadnego historycznego śladu. Nie pozostaje ono w stosie aktywności danego zadania, więc użytkownik nie może do niego wrócić. W takim przypadku obiekt onActivityResult() nigdy nie jest wywoływany, jeśli w jego wyniku rozpoczniesz inne działanie.

Ten atrybut został wprowadzony na poziomie API 3.

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

System odczytuje ten atrybut, aby określić, która aktywność ma się rozpocząć, gdy użytkownik kliknie przycisk W górę na pasku działań. System może też użyć tych informacji do syntetyzowania wstecznego stosu działań za pomocą funkcji TaskStackBuilder.

Aby obsługiwać poziomy API od 4 do 16, możesz też zadeklarować aktywność nadrzędną za pomocą elementu <meta-data>, który określa wartość parametru "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 sekcji Udostępnianie nawigacji.

Ten atrybut został wprowadzony na poziomie API 16.

android:persistableMode

Określa, jak instancja działania jest zachowywana w zadaniu zawierającym działanie po ponownym uruchomieniu urządzenia.

Jeśli aktywność główna zadania ustawia wartość tego atrybutu na persistRootOnly, zachowujena jest tylko aktywność główna. W przeciwnym razie badane są działania znajdujące się wyżej w stosie 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 tej aktywności głównej.

Gdy intencja uruchamiania aplikacji wczytuje jej główną aktywność, nie otrzymuje ona obiektu PersistableBundle. Nie używaj więc onSaveInstanceState() do zachowywania stanu głównej aktywności aplikacji po ponownym uruchomieniu urządzenia.

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

persistAcrossReboots

Stan tej aktywności jest zachowywany razem ze stanem każdej aktywności znajdującej się wyżej w stosie wstecznym, która ma własny atrybut persistableMode ustawiony na persistAcrossReboots. Jeśli aktywność nie ma atrybutu persistableMode ustawionego na persistAcrossReboots lub jest uruchamiana za pomocą flagi Intent.FLAG_ACTIVITY_NEW_DOCUMENT, to działanie oraz wszystkie działania znajdujące się wyżej w stosie nie zostaną zachowane.

Gdy intencja wczytuje w aplikacji działanie, którego atrybut persistableMode jest ustawiony na persistAcrossReboots, otrzymuje ona obiekt PersistableBundle w metodzie onCreate(). Dlatego możesz używać właściwości onSaveInstanceState(), aby zachować stan aktywności po ponownym uruchomieniu urządzenia, jeśli atrybut persistableMode ma wartość persistAcrossReboots.

Uwaga: ta wartość atrybutu wpływa na zachowanie aplikacji, nawet jeśli jest ustawiona na działanie inne niż główna aktywność aplikacji.

persistNever

Stan aktywności nie jest zachowywany.

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

Ten atrybut został wprowadzony na poziomie API 21.

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

Jeśli ten atrybut nie zostanie ustawiony, do aktywności zostaną zastosowane uprawnienia ustawione przez atrybut permission elementu <application>. 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 pliku manifestu aplikacji oraz w sekcji Wskazówki dotyczące bezpieczeństwa.

android:process
Nazwa procesu, w którym jest uruchamiana aktywność. Normalnie wszystkie komponenty aplikacji działają pod domyślną nazwą procesu utworzoną dla niej, więc nie trzeba używać tego atrybutu. W razie potrzeby możesz jednak zastąpić tym atrybutem domyślną nazwę procesu, co pozwoli Ci rozdzielić 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 działanie jest w nim uruchamiane.

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 współużytkują proces, co zmniejsza wykorzystanie zasobów.

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

android:relinquishTaskIdentity
Określa, czy aktywność usuwa swoje identyfikatory zadań z aktywności znajdującej się nad nią w stosie zadań. Zadanie, którego aktywność na poziomie głównym ma ten atrybut ustawiony na "true", zastępuje podstawową wartość Intent przez działanie następnej aktywności w zadaniu.

Jeśli następne działanie również ma ten atrybut ustawiony na "true", zwraca podstawową wartość Intent wszystkim działaniu, które uruchamia w tym samym zadaniu. Procedura ta będzie kontynuowana w przypadku każdej aktywności, dopóki nie zostanie napotkana aktywność z tym atrybutem ustawionym na "false". Wartością domyślną jest "false".

Ten atrybut ustawiony na "true" pozwala też na użycie ActivityManager.TaskDescription w aktywności do zmiany etykiet, kolorów i ikon na ekranie Ostatnie.

android:resizeableActivity

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

Jeśli ustawisz ten atrybut na "true", użytkownik będzie mógł uruchamiać aktywność w trybie podzielonego ekranu i eksploracji swobodnej. Jeśli ustawisz atrybut na wartość "false", nie będzie można testować ani optymalizować aplikacji pod kątem środowiska wielu okien. System może nadal uruchamiać aktywność w trybie wielu okien z zastosowanym trybem zgodności.

Ustawienie tego atrybutu na "false" nie gwarantuje, że na ekranie nie będą widoczne żadne inne aplikacje działające w trybie wielu okien (np. w trybie obraz w obrazie lub na innych ekranach). 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 podasz wartości tego atrybutu, domyślnie będzie to "true".

Jeśli kierujesz aplikację 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 aplikacja obsługuje tryb wielu okien. Jeśli ma wartość resizeableActivity="false", aplikacja przechodzi w tryb zgodności, gdy jest to konieczne, by zapewnić zgodność z wymiarami wyświetlacza.
  • Małe ekrany (sw < 600 dp): jeśli resizeableActivity="true" oraz minimalna szerokość i minimalna wysokość aktywności spełniają wymagania trybu 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 interfejsu API na poziomie 31.

Ten atrybut został dodany na poziomie API 24.

Uwaga: główna wartość aktywności zadania jest stosowana do wszystkich dodatkowych działań uruchomionych w tym zadaniu. Oznacza to, że jeśli można zmienić rozmiar głównej aktywności zadania, system traktuje wszystkie pozostałe aktywności w zadaniu jako tę możliwość. Jeśli nie można zmienić rozmiaru aktywności głównej, nie można zmieniać rozmiaru innych działań w zadaniu.

android:screenOrientation

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

Na 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.

W przypadku Androida 12 (poziom interfejsu API 31) i nowszych producenci mogą konfigurować poszczególne ekrany poszczególnych urządzeń (np. ekrany składane w formacie tabletu) tak, aby ignorowały specyfikację orientacji i wymusiły używanie aplikacji określonej jako pionowa, ale z czarnymi pasami na ekranach poziomych. Dzięki temu aplikacja nadal ma format obrazu w orientacji pionowej, ale jest orientacyjna w celu ułatwienia obsługi aplikacji.

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

"unspecified" Wartość domyślna. System wybiera orientację. Użyte zasady, a tym samym wybory dokonywane w konkretnych kontekstach, mogą różnić się w zależności od urządzenia.
"behind" Ta sama orientacja co działanie, które znajduje się bezpośrednio 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 w kierunku przeciwnym do normalnego. Dodano w interfejsie API na poziomie 9.
"reversePortrait" ma orientację pionową w przeciwnym kierunku niż normalna pionowa, Dodano w interfejsie API na poziomie 9.
"sensorLandscape" Orientacja pozioma. Może być też normalna lub odwrotna (w zależności od czujnika urządzenia). Czujnik jest używany, nawet jeśli użytkownik zablokował obrót w oparciu o czujnik. Dodano w interfejsie API na poziomie 9.
"sensorPortrait" orientacja pionowa. Może być też normalna lub odwrócona (w zależności od czujnika urządzenia). Czujnik jest używany, nawet jeśli użytkownik zablokował obrót w oparciu o czujnik. Jednak w zależności od konfiguracji urządzenia obrót do góry nogami może być niedozwolony. Dodano w interfejsie API na poziomie 9.
"userLandscape" Orientacja pozioma. Może być też normalna lub odwrócona, w zależności od ustawień czujnika urządzenia i preferencji użytkownika. Dodano w interfejsie API na poziomie 18.
"userPortrait" jest w orientacji pionowej. Może być też normalna lub odwrócona – w zależności od czujnika urządzenia i preferencji użytkownika. Jednak w zależności od konfiguracji urządzenia obrót do góry nogami może być niedozwolony. Dodano w interfejsie API na poziomie 18.
"sensor" Orientację określa czujnik orientacji urządzenia. Orientacja wyświetlacza zależy od sposobu trzymania urządzenia przez użytkownika. Zmienia się, gdy użytkownik obróci urządzenie. Jednak niektóre urządzenia domyślnie nie obracają widoku do wszystkich czterech możliwych orientacji. Aby użyć wszystkich 4 orientacji, użyj "fullSensor". Czujnik jest używany nawet wtedy, gdy użytkownik zablokował obrót na podstawie czujnika.
"fullSensor" Czujnik orientacji urządzenia określa orientację w dowolnej z 4 orientacji. Funkcja jest podobna do "sensor", z tym że obsługuje każdą z 4 możliwych orientacji ekranu niezależnie od tego, co normalnie obsługuje urządzenie. Na przykład niektóre urządzenia zwykle nie używają odwrotnej orientacji pionowej ani poziomej, ale to możliwe. Dodano w interfejsie API na poziomie 9.
"nosensor" Orientacja jest określana bez odniesienia do fizycznego czujnika orientacji. Czujnik jest ignorowany, więc wyświetlacz nie obraca się odpowiednio do ruchów użytkownika.
"user" Bieżąca preferowana orientacja użytkownika.
"fullUser" Jeśli użytkownik zablokował obrót w oparciu o czujnik, działa to tak samo jak w przypadku funkcji user. W przeciwnym razie działa tak samo jak w przypadku elementu fullSensor i dopuszcza dowolną z 4 możliwych orientacji ekranu. Dodano w interfejsie API na poziomie 18.
"locked" Blokuje orientację do bieżącego obrotu. Dodano na poziomie interfejsu API 18.

Uwaga: gdy zadeklarujesz jedną z wartości orientacji poziomej lub pionowej, jest to niezbędne dla orientacji, w której działa aktywność. Zadeklarowana wartość umożliwia filtrowanie według usług takich jak Google Play, więc aplikacja jest dostępna tylko na urządzeniach, które obsługują orientację wymaganą przez Twoje działania. 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ą.

Zadeklaruj też wyraźnie, że aplikacja wymaga orientacji pionowej lub poziomej za pomocą elementu <uses-feature>, np. <uses-feature android:name="android.hardware.screen.portrait"/>. Jest to działanie filtrowania udostępniane przez Google Play i inne usługi, które go obsługują. Sama platforma nie określa, czy można zainstalować aplikację, jeśli urządzenie obsługuje tylko określone orientacje.

android:showForAllUsers

Określa, czy aktywność jest wyświetlana, 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 ustawić atrybut zasobu lub motywu, który zawiera wartość logiczną.

Ten atrybut został dodany na poziomie API 23.

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

Zwykle przed tymczasowym wyłączeniem działania w celu zaoszczędzenia 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 onCreate() po ponownym uruchomieniu działania. Jeśli ten atrybut jest ustawiony na "true", onSaveInstanceState() może nie zostać wywołany, a onCreate() jest przekazywany null zamiast Bundle, ponieważ ma to miejsce, gdy aktywność rozpoczyna się po raz pierwszy.

Ustawienie "true" oznacza, że aktywność może być uruchamiana ponownie bez jej utrzymania. Na przykład aktywność, która wyświetla ekran główny, korzysta z tego ustawienia, aby nie został usunięty, jeśli z jakiegoś powodu ulegnie awarii.

android:supportsPictureInPicture

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

android:taskAffinity
Zadanie związane z aktywnością. Działania o tym samym podobieństwie należą koncepcyjnie do tego samego zadania i do tej samej „aplikacji” z perspektywy użytkownika. Powinowactwo zadania jest określane na podstawie koligacji jego głównej aktywności.

Koligacja określa 2 rzeczy: zadanie, dla którego dana aktywność jest ponownie nadrzędna (patrz atrybut allowTaskReparenting), oraz zadanie, w którym znajduje się aktywność po jej uruchomieniu z flagą FLAG_ACTIVITY_NEW_TASK.

Domyślnie wszystkie działania w aplikacji mają tę samą koligację. Możesz skonfigurować ten atrybut tak, aby grupować je w różny sposób, a nawet umieszczać aktywności zdefiniowane w różnych aplikacjach w tym samym zadaniu. Aby określić, że aktywność nie jest powiązana z żadnym zadaniem, ustaw pusty ciąg znaków.

Jeśli ten atrybut nie jest ustawiony, aktywność odziedziczy koligację ustawioną dla aplikacji. Patrz atrybut <application> taskAffinity elementu. Nazwa domyślnej koligacji dla 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 korzystała z niego theme. Może też powodować wyświetlanie animacji przed uruchomieniem działania, aby lepiej pasowało do jego rzeczywistego wyglądu.

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

android:uiOptions
Dodatkowe opcje interfejsu aktywności. Musi to być jedna z następujących wartości.

WartośćOpis
"none"Brak dodatkowych opcji interfejsu. Jest to ustawienie domyślne.
"splitActionBarWhenNarrow"Dodaje u dołu ekranu pasek, który pozwala wyświetlać działania na pasku aplikacji (nazywanym też paskiem działań), gdy użytkownik jest zablokowany w przestrzeni poziomej (np. w trybie pionowym na słuchawce). Zamiast niewielkiej liczby działań widocznych na pasku aplikacji u góry ekranu pasek aplikacji jest podzielony na górną sekcję nawigacyjną i dolny pasek działań. Oznacza to, że dostępna jest rozsądna ilość miejsca nie tylko na elementy działania, ale także na nawigację i elementy tytułu u góry. Elementy menu nie są podzielone na 2 słupki. Zawsze pojawiają się razem.

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

Ten atrybut został dodany na poziomie API 14.

android:windowSoftInputMode
W jaki sposób okno główne aktywności wchodzi w interakcję z oknem zawierającym ekranową klawiaturę programową. Ustawienie tego atrybutu wpływa na 2 rzeczy:
  • Określa, czy klawiatura programowa jest ukryta czy widoczna, gdy aktywność przyciąga uwagę użytkownika.
  • Określa, czy okno główne działania zostaje pomniejszone, aby zrobić miejsce na klawiaturę programową, lub przesuwanie jego zawartości w celu uwidocznienia bieżącego zaznaczenia, gdy część okna jest zakryta przez klawiaturę programową.

Ustawienie musi być jedną z wartości wymienionych w tabeli poniżej lub kombinacjami 1 wartości "state..." i 1 wartości "adjust...". Ustawienie wielu wartości w każdej grupie, na przykład wielu wartości "state...", daje niezdefiniowane wyniki. Poszczególne wartości są rozdzielone pionową kreską (|), jak pokazano 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 programowa jest ukryta czy widoczna. System wybiera odpowiedni stan lub korzysta z ustawień motywu.

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

"stateUnchanged" Klawiatura programowa pozostaje widoczna w tym stanie: była widoczna lub ukryta w chwili, gdy aktywność dobiega końca.
"stateHidden" Klawiatura programowa jest ukryta, gdy użytkownik wybierze działanie, czyli przejdzie do niego za zgodą użytkownika i nie cofa się do niej, gdy ją opuszcza.
"stateAlwaysHidden" Klawiatura programowa jest zawsze ukryta, gdy aktywne jest okno główne aktywności.
"stateVisible" Klawiatura programowa staje się widoczna, gdy użytkownik wybierze działanie, czyli przejdzie do niego za zgodą użytkownika i nie cofa się do niej, gdy ją opuszcza.
"stateAlwaysVisible" Klawiatura programowa staje się widoczna, gdy w oknie jest zaznaczone okno wprowadzania danych.
"adjustUnspecified" Określa, czy rozmiar głównego okna aktywności zmienia rozmiar, aby zrobić miejsce na klawiaturę ekranową, czy zawartość przesuwania okna w celu wyświetlenia bieżącego zaznaczenia na ekranie jest nieokreślona. System automatycznie wybiera jeden z tych trybów w zależności od tego, czy zawartość okna ma widoki układu, które pozwalają na przewijanie zawartości. W takim przypadku okno zmienia rozmiar, zakładając, że przewijanie może spowodować, że cała jego zawartość będzie widoczna na mniejszym obszarze.

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

"adjustResize" Rozmiar głównego okna aktywności jest zawsze zmieniany, aby zrobić miejsce na klawiaturę ekranową.
"adjustPan" Rozmiar głównego okna aktywności nie zostaje zmieniony, aby zrobić miejsce na klawiaturę programową. Zawartość okna jest natomiast automatycznie przesuwana, dzięki czemu bieżący zaznaczony element nie jest nigdy przysłonięty, a użytkownicy zawsze widzą, co wpisują tekst. Jest to zwykle mniej pożądane niż zmiana rozmiaru, ponieważ użytkownik może chcieć zamknąć klawiaturę programową, aby dostać się do zasłoniętych części okna i wejść z nimi w interakcję.

Ten atrybut został wprowadzony na poziomie API 3.

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