Zadanie to zbiór działań, z którymi użytkownicy wchodzą w interakcje, gdy zrobić coś w aplikacji. Działania te są ułożone w stosie nazywany back stack (stos cofnięty) w kolejności otwarcia poszczególnych aktywności.
Na przykład aplikacja do poczty e-mail może mieć jedną aktywność, aby wyświetlić listę nowych wiadomości. Gdy użytkownik wybierze wiadomość, otworzy się nowa aktywność, aby wyświetlić tę wiadomość. Ta nowa aktywność została dodana na tylny stos. Później, gdy użytkownik kliknie lub kliknie Wstecz, nastąpi ta nowa aktywność. dobiega końca i zostaje wypuszczony ze stosu.
Cykl życia zadania i jego stosu tylnego
Ekran główny urządzenia to punkt początkowy większości zadań. Gdy użytkownik dotknie ekranu ikonę aplikacji lub skrótu w Menu z aplikacjami lub na ekranie głównym, to zadanie jest wyświetlane na pierwszym planie. Jeśli w przypadku aplikacji nie ma zadania, zostało utworzone nowe zadanie, a główne aktywność w przypadku otwierania tej aplikacji jako aktywność pierwiastka w stosie.
Gdy bieżąca aktywność rozpocznie inne, nowe działanie zostanie przeniesione na górę i ustawia ostrość. Poprzednia aktywność pozostaje w stosie, ale jest zatrzymano. Po zatrzymaniu działania system zachowuje bieżący stan za pomocą prostego interfejsu online. Gdy użytkownik wykona działanie cofnięcia, bieżąca aktywność zostanie które wyskoczyły z góry stosu i zostały zniszczone. poprzednia aktywność zostanie wznowiona, a jej interfejs użytkownika zostanie przywrócony.
Aktywności w stosy nigdy nie są porządkowane, są tylko wypychane na stos i wyskakiwane z niego w miarę, jak są uruchomione przez bieżącą aktywność i odrzucone przez użytkownika za pomocą przycisku lub gestu Wstecz. Tylny stos działa więc jako struktury obiektów typu ostatni w, pierwszy w dół. Rysunek 1 przedstawia oś czasu z czynności wypychanych na bok i wyskakujących z backendu.
Każda czynność w stosie, gdy użytkownik będzie nadal naciskać Wstecz lub cofać się jest wyświetlana, aby pokazać poprzednią wersję, dopóki użytkownik nie wróci na stronę główną ekranu lub innego działania, które było uruchomione w momencie rozpoczęcia zadania. Gdy wszyscy działania zostały usunięte ze stosu, zadanie już nie istnieje.
Działanie po dotknięciu tyłu w przypadku działań uruchamiających na urządzeniu głównym
Działania uruchamiające główny element to działania deklarujące intencję
filtr, używając obu
ACTION_MAIN
i
CATEGORY_LAUNCHER
Są one wyjątkowe, ponieważ stanowią punkt wejścia do aplikacji
Menu z aplikacjami i służy do uruchamiania zadań.
Gdy użytkownik klika lub wykonuje gest Wstecz z poziomu głównego programu uruchamiającego, obsługuje zdarzenia w różny sposób, w zależności od wersji Androida, jest uruchomione urządzenie.
- Zachowanie systemu na Androidzie 11 i starszych
- System kończy aktywność.
- Zachowanie systemu na Androidzie 12 i nowszych
System przenosi aktywność i zadanie w tle, zamiast na koniec ćwiczenia. To zachowanie jest zgodne z domyślnym zachowaniem systemu, gdy: wychodzenia z aplikacji za pomocą przycisku lub gestu ekranu głównego.
W większości przypadków oznacza to, że użytkownicy mogą szybciej wznowić aplikację. z stanu „ciepły”, a nie Konieczność całkowitego ponownego uruchomienia aplikacji na zimno stanu.
Jeśli chcesz udostępnić niestandardową nawigację wstecz, zalecamy używanie interfejsów AndroidX Activity API zamiast zastępowania
onBackPressed()
Interfejsy API związane z aktywnością na AndroidzieX automatycznie przekazują do odpowiednie działanie systemu, jeśli żadne komponenty nie przechwytują systemu Kliknij wstecz.Jeśli jednak Twoja aplikacja
onBackPressed()
do obsługi Wróć do nawigacji i dokończ aktywność, zaktualizuj implementację, by wywołać dosuper.onBackPressed()
, zamiast zakończyć. Łączę Aplikacjasuper.onBackPressed()
przenosi aktywność i powiązane z nią zadanie w tle, gdy odpowiednie i pozwala użytkownikom na bardziej spójną nawigację w różnych aplikacjach.
Zadania w tle i na pierwszym planie
Zadanie to spójna jednostka, która może przejść do trybu w tle, gdy użytkownik rozpocznie nowe zadanie lub powoduje przejście do ekranu głównego. W tle wszystkie działania zadania zostaną zatrzymane, ale stos wsteczny zadania pozostanie niezmieniony, traci koncentrację podczas wykonywania innego zadania, co pokazuje rysunek 2. O zadanie może następnie wrócić na pierwszy plan, aby użytkownicy mogli kontynuować pracę od miejsca, w którym ją opuścili. wyłączone.
Rozważ ten przepływ zadań w przypadku bieżącego zadania A, ma w stosie trzy działania, w tym dwa w ramach bieżącej:
Użytkownik używa przycisku lub gestu ekranu głównego, a następnie uruchamia nową aplikację na Menu z aplikacjami.
Gdy pojawi się ekran główny, zadanie A będzie w tle. Gdy nowa wersja uruchamia się aplikacja, system rozpoczyna zadanie dla tej aplikacji (zadanie B) z własnym stosem; aktywności.
Po interakcji z aplikacją użytkownik wraca ponownie na ekran główny i wybiera przycisk aplikację, która rozpoczęła zadanie A.
Teraz na pierwszym planie pojawia się zadanie A – wszystkie 3 działania w stosie są a działalność u góry stosu zostanie wznowiona. W tym momencie Użytkownik może też wrócić do zadania B, wchodząc na ekran główny i wybierając ikonę aplikacji która rozpoczęła to zadanie, lub wybierając zadanie aplikacji z listy Ostatnie ekranu.
Wiele instancji aktywności
Kolejność aktywności na plecach stosów nie jest zawsze zmieniana, pozwala użytkownikom rozpocząć określoną czynność na podstawie kilku działań, takiej aktywności jest tworzone i przekazywane na stos zamiast wszystkie wcześniejsze wystąpienia aktywności na górze. W związku z tym jeden aktywność w aplikacji może być inicjowana wiele razy, nawet z różnych jak widać na rysunku 3.
Jeśli użytkownik przejdzie wstecz, używając przycisku Wstecz przycisk lub gest, wystąpienia aktywności są ujawniane w kolejności, w jakiej otwartego, z własnym stanem interfejsu użytkownika. Możesz jednak zmienić to ustawienie działania, jeśli nie chcesz, aby dana aktywność występowała więcej niż raz. Ucz się Więcej informacji na ten temat znajdziesz w sekcji Zarządzanie zadania.
Środowiska z wieloma oknami
Gdy aplikacje działają jednocześnie w widoku wielu okien środowiska, obsługiwane w Androidzie 7.0 (interfejs API na poziomie 24) lub wyższym, system zarządza zadaniami oddzielnie dla każdego okna. Każdy może zawierać wiele zadań. To samo dotyczy aplikacji na Androida działających na Chromebooki: system umożliwia zarządzanie zadaniami, czyli grupami zadań w zależności od terminu.
Podsumowanie cyklu życia
Podsumujmy domyślne zachowanie aktywności i zadań:
Gdy aktywność A rozpoczyna aktywność B, aktywność A zostaje zatrzymana, ale system zachowuje swój stan, np. pozycję przewijania i wszelki tekst wpisany w formularzach. Jeśli użytkownik klika lub używa gestu Wstecz w aktywności B, aktywność A. zostanie wznowiony z przywróconym stanem.
Gdy użytkownik opuści zadanie, naciskając przycisk lub gest na ekranie głównym, aktywność zostanie zatrzymana, a jego zadanie będzie w tle. System zachowuje stan każdej aktywności w zadaniu. Jeśli użytkownik później wznowi to zadanie przez po kliknięciu ikony programu uruchamiającego, która rozpoczęła zadanie, zadanie pojawi się i wznawia działanie u góry stosu.
Jeśli użytkownik kliknie lub cofnie przycisk Wstecz, zostanie pobrana bieżąca aktywność a następnie zniszczyć. Poprzednia aktywność w grupie zostanie wznowiona. Kiedy aktywność zostanie zniszczona, system nie zachowa jej stanu.
To działanie różni się w przypadku czynności uruchamiających na urządzeniu głównym gdy aplikacja działa na urządzeniu z Androidem 12 lub nowszym.
Wystąpienia działań można tworzyć wiele razy, nawet z innych zadań.
Zarządzanie zadaniami
Android zarządza zadaniami i stosem tylnym, rozmieszczając je wszystkie działania rozpoczęte po sobie w tym samym zadaniu, w ciągu ostatniego na zewnątrz. Sprawdza się to w przypadku większości aplikacji i nie musisz się martwić powiązania aktywności z zadaniami lub ich istnienia w plecach. stosów.
Możesz jednak chcieć zakłócić ich normalne działanie. Może na przykład być związana z rozpoczęciem nowego zadania przez aktywność w aplikacji, gdy rozpoczęto, zamiast umieszczać w bieżącym zadaniu. Lub, gdy uruchomisz działania, możesz przenieść jego istniejące wystąpienie zamiast podczas tworzenia nowej instancji na górze stosu wstecznego. Możesz też chcesz usunąć ze wszystkich aktywności z wyjątkiem aktywności na poziomie głównym gdy użytkownik opuści zadanie.
Za pomocą atrybutów w
Element manifestu <activity>
i flagi w intencji, którą przekazujesz
startActivity()
Oto atrybuty podmiotu zabezpieczeń <activity>
, których możesz używać do zarządzania zadaniami:
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
Możesz użyć tych flag intencji podmiotu zabezpieczeń:
W poniższych sekcjach opisano, jak używać tych atrybutów pliku manifestu. i flagi intencji, aby zdefiniować, jak działania są powiązane z zadaniami i w jaki sposób zachowanie w stosunku do tyłu.
Omówiliśmy też kwestie związane z tym, jak zadania i aktywności są widoczne i zarządzane na ekranie Ostatnie. Normalnie definiują sposób przedstawiania zadań i działań w Ostatnie. Nie musisz zmieniać tego działania. Więcej Więcej informacji znajdziesz w sekcji Ekran Ostatnie.
Zdefiniuj tryby uruchamiania
Tryby uruchamiania pozwalają określić sposób powiązania nowego wystąpienia aktywności z bieżącym zadaniem. Tryby uruchamiania można definiować na 2 sposoby: w następujących sekcjach:
-
Deklarując działanie w pliku manifestu, możesz określić sposób aktywność zostaje przypisana do zadań po uruchomieniu.
-
Gdy dzwonisz
startActivity()
możesz dodać flagę doIntent
z informacją, jak (lub czy) nowe działanie zostanie powiązane z bieżącym zadaniem.
Jeśli więc aktywność A rozpoczyna działanie B, działanie B może zdefiniować w swoim manifeście jak jest powiązane z bieżącym zadaniem, a aktywność A może korzystać z flagi intencji aby dowiedzieć się, jak aktywność B może być powiązana z bieżącym zadaniem.
Jeśli oba działania B określają, jak aktywność B powiąże się z zadaniem, zgodnie z definicją w intencji, jest ono brane pod uwagę w odniesieniu do żądania Aktywności B jako zdefiniowane w pliku manifestu.
Zdefiniuj tryby uruchamiania za pomocą pliku manifestu
Przy deklarowaniu aktywności w pliku manifestu możesz określić, w jaki sposób
jest powiązane z zadaniem przy użyciu
Element <activity>
launchMode
.
Do atrybutu launchMode
możesz przypisać 5 trybów uruchamiania:
"standard"
- Tryb domyślny. System tworzy nową instancję aktywności w zadaniu został uruchomiony i kieruje do niego intencję. Działaniem może być wiele instancji, każda może należeć do innego zadania; jedno zadanie może mieć wiele instancji.
"singleTop"
- Jeśli wystąpienie aktywności już istnieje u góry bieżącego zadania,
system kieruje intencję do tej instancji przez wywołanie jej
onNewIntent()
. zamiast tworzenia nowego wystąpienia aktywności. Działanie jest wiele instancji, każda może należeć do innego zadania, i jedno zadanie może mieć wiele wystąpień (ale tylko wtedy, gdy działanie na samej górze stosu wstecznego nie jest istniejącym wystąpieniem aktywności).
Na przykład załóżmy, że tylny stos zadania składa się z działania głównego A o nazwie aktywności B, C i D (np. stos będzie A-B-C-D, a D będzie na górze). Zamiar przychodzi do działania typu D. Jeśli D ma domyślne uruchomienie
"standard"
w trybie A-B-C-D-D powstaje nowa instancja klasy, a stos zmienia się w A-B-C-D-D. Jeśli jednak tryb uruchamiania D to"singleTop"
, istniejąca instancja D otrzymuje intencję przez:onNewIntent()
, ponieważ jest on na górze stosu, który pozostaje A–B-C-D. Jeśli: z drugiej strony, dla działania typu B dla działania typu B zostaje dodane nowe wystąpienie B stosu, nawet jeśli jego tryb uruchamiania to"singleTop"
."singleTask"
- System tworzy aktywność u głównego zadania lub znajduje
w ramach istniejącego zadania o tej samej koligacji. Jeśli w jego przypadku
aktywność już istnieje, system kieruje
do istniejącej instancji za pomocą wywołania jej
onNewIntent()
zamiast tworzenia nowej instancji. W międzyczasie wszystkie pozostałe jest niszczona. .
"singleInstance"
.- Działanie jest takie samo jak w przypadku aplikacji
"singleTask"
z wyjątkiem tego, że system nie uruchamia żadnych innych funkcji wykonywać działania w ramach zadania zawierającego instancję. Aktywność jest zawsze jako jedynego członka grupy. Wszystkie aktywności rozpoczęte przez to wydarzenie są otwierane w osobne zadanie.
"singleInstancePerTask"
.- Działanie może być wykonywane tylko jako główne działanie w ramach zadania
działanie, które spowodowało utworzenie zadania, więc może występować tylko jedna instancja
podczas wykonywania zadania. W przeciwieństwie do trybu uruchamiania
singleTask
funkcja ta aktywność może być uruchomiona w wielu instancjach w różnych zadaniach, jeśliFLAG_ACTIVITY_MULTIPLE_TASK
. lubFLAG_ACTIVITY_NEW_DOCUMENT
flaga jest ustawiona.
Kolejny przykład: aplikacja przeglądarki na Androida deklaruje, że przeglądarka
aktywność jest zawsze otwierana w osobnym zadaniu przez określenie singleTask
tryb uruchamiania w <activity>
. Oznacza to, że jeśli aplikacja wysyła intencję otwarcia Androida
przeglądarki, jej aktywność nie jest umieszczona w tym samym zadaniu co Twoja aplikacja. Zamiast tego:
zostanie uruchomione nowe zadanie dla przeglądarki, albo jeśli przeglądarka ma już zadanie,
które działa w tle, to zadanie jest przekazywane w celu obsługi nowych
intencji.
Niezależnie od tego, czy aktywność rozpoczyna się w nowym zadaniu, czy w tym samym zadaniu
aktywność, która ją rozpoczęła, przycisk Wstecz i gest zawsze przyjmują
do poprzedniej aktywności. Jeśli jednak rozpoczniesz aktywność, która
określa
tryb uruchamiania singleTask
. Jej wystąpienie znajduje się w
zadanie w tle, całe zadanie pojawi się na pierwszym planie. W tym momencie
obejmuje wszystkie działania z zadania
w górnej części stosu. Rysunek 4 pokazuje taki scenariusz.
Więcej informacji o używaniu trybów uruchamiania w pliku manifestu znajdziesz w dokumentacji
Dokumentacja elementu <activity>
.
Zdefiniuj tryby uruchamiania za pomocą flag intencji
Gdy rozpoczynasz aktywność, możesz zmienić jej domyślne powiązanie
przez uwzględnienie flag w intencji, którą dostarczasz
startActivity()
Flagi, których możesz użyć do zmiany domyślnego działania, są następujące:
FLAG_ACTIVITY_NEW_TASK
System rozpocznie aktywność w nowym zadaniu. Jeśli zadanie jest już uruchomione dla uruchamia się, zadanie jest wyświetlane na pierwszym planie wraz z ostatni stan został przywrócony, a aktywność otrzyma nową intencję w
onNewIntent()
Powoduje to takie samo zachowanie jak
"singleTask"
Omówiona wartośćlaunchMode
w poprzedniej sekcji.FLAG_ACTIVITY_SINGLE_TOP
Jeśli inicjowana aktywność to bieżąca aktywność, w górnej części tyłu stosu, istniejąca instancja otrzymuje wywołanie
onNewIntent()
zamiast tworzyć nowe wystąpienie aktywności.Powoduje to takie samo zachowanie jak
"singleTop"
WartośćlaunchMode
omówiona w poprzedniej sekcji.FLAG_ACTIVITY_CLEAR_TOP
Jeśli inicjowana aktywność jest już uruchomiona w bieżącym zadaniu, to zamiast uruchamiać nowe wystąpienie tego działania, powoduje zniszczenie wszystkich pozostałych działań, które występują na jego tle. Intencją jest dostarczana do wznowionego wystąpienia aktywności, teraz u góry, przez
onNewIntent()
Atrybut
launchMode
nie ma wartości, która powoduje takie zachowanie.FLAG_ACTIVITY_CLEAR_TOP
jest najczęściej używany w połączeniu zFLAG_ACTIVITY_NEW_TASK
Te flagi użyte razem Zlokalizuj istniejącą aktywność w innym zadaniu i umieść ją w odpowiednim miejscu w których może zareagować na intencje.
Podobne zainteresowania
Podobne zainteresowania wskazują, które zadanie preferuje aktywność do których należy. Według domyślnie wszystkie aktywności z tej samej aplikacji są ze sobą powiązane: oni „preferują” i wykonywali te same zadania.
Możesz jednak zmienić domyślną koligację aktywności. Zdefiniowane moduły mogą mieć wspólne zainteresowania, a działania zdefiniowane w tej samej aplikacji mogą być przypisane różne podobne zadania.
Koligację aktywności możesz zmienić za pomocą interfejsu taskAffinity
atrybut zbioru danych <activity>
.
Atrybut taskAffinity
przyjmuje wartość ciągu znaków, która musi być inna niż
domyślna nazwa pakietu
zadeklarowane w tabeli <manifest>
, ponieważ system używa tej nazwy do zidentyfikowania zadania domyślnego.
z zainteresowaniami aplikacji.
Przywiązanie wchodzi w grę w dwóch sytuacjach:
Gdy intencja uruchamiająca działanie zawiera tag
FLAG_ACTIVITY_NEW_TASK
flaga.Nowe działanie jest domyślnie uruchamiane w ramach zadania, które o nazwie
startActivity()
Jest przekazywana na ten sam tylny stos co element wywołujący.Jeśli jednak intencja przekazana do
startActivity()
zawiera tagFLAG_ACTIVITY_NEW_TASK
oznacza, że system szuka innego zadania dla nowej aktywności. Często To jest nowe zadanie. Jednak nie musi tak być. Jeśli występuje istniejące zadanie o takim samym podobieństwom do nowego działania, dla tego zadania. W przeciwnym razie rozpocznie się nowe zadanie.Jeśli ta flaga powoduje rozpoczęcie nowego zadania, a użytkownik użyje polecenia przycisk ekranu głównego lub gest, który pozwala go opuścić; użytkownik musi być w jakiś sposób wróć do zadania. Niektóre elementy, na przykład menedżer powiadomień, zawsze rozpoczynają działania w zadaniu zewnętrznym, a nie w ramach własnych, więc zawsze umieszczają
FLAG_ACTIVITY_NEW_TASK
w intencjach, do których są przekazywanestartActivity()
Jeśli podmiot zewnętrzny, który może użyj tej flagi, aby wywołać Twoją aktywność, upewnij się, że użytkownik ma niezależnego sposobu powrotu do uruchomione zadanie, np. z ikoną programu uruchamiającego, gdzie głównym działaniem zadanie ma
CATEGORY_LAUNCHER
filtr intencji. Więcej informacji znajdziesz w sekcji o rozpoczynaniu zadań.Gdy aktywność ma
allowTaskReparenting
ustawiono na"true"
.W takim przypadku aktywność może zostać przeniesiona z zadania, w którym została uruchomiona, do zadania, na którym się znajduje. kiedy to zadanie pojawi się na pierwszym planie.
Na przykład załóżmy, że aktywność raportuje warunki pogodowe w wybrane miasta są zdefiniowane w aplikacji turystycznej. Podobne zainteresowania jak inne aktywności w tej samej aplikacji, domyślne koligację z aplikacją. zostaną ponownie ustawione jako nadrzędne przy użyciu tego atrybutu.
Gdy jedna z aktywności rozpocznie się działania reportera pogody, początkowo należy do tego samego zadania działania. Jeśli jednak zadanie aplikacji turystycznej wyświetli się na pierwszym planie, aktywność reportera pogodowego zostanie przypisana do tego zadania i będzie w nim wyświetlana.
Wyczyść tylny stos
Jeśli użytkownik opuści zadanie przez dłuższy czas, system anuluje zadanie oprócz aktywności głównej. Gdy użytkownik wróci do zadania, System działa w ten sposób na podstawie założenie, że po dłuższy czas, gdy użytkownicy porzucili to, co działyli; oraz wracają do zadania, aby zacząć coś nowego.
Istnieją atrybuty aktywności, których możesz użyć, aby zmienić to działanie:
alwaysRetainTaskState
- Gdy ten atrybut jest ustawiony na
"true"
w głównej aktywności zadania, Opisane przed chwilą domyślne zachowanie nie występuje. Zadanie zawiera wszystkie nawet po długim okresie. clearTaskOnLaunch
Gdy ten atrybut jest ustawiony na
"true"
w głównej aktywności zadania, zadanie jest usuwana z aktywności na poziomie głównym za każdym razem, gdy użytkownik opuści zadanie lub wraca do niego. Innymi słowy, jest to przeciwieństwoalwaysRetainTaskState
użytkownik zawsze wraca do zadania w stanie początkowym, nawet po opuszczeniu tylko na chwilę.finishOnTaskLaunch
Ten atrybut wygląda tak:
clearTaskOnLaunch
, ale dotyczy on pojedynczego działania, a nie całego zadania. Może też powodować dowolne działanie do zakończenia oprócz aktywności głównej. Kiedy jest ustawiona na"true"
, będzie to część zadania tylko w bieżącej sesji. Jeśli użytkownik opuści zadanie, a następnie wróci do niego, zadanie nie będzie już dostępne.
Rozpocznij zadanie
Możesz skonfigurować aktywność jako punkt wejścia dla zadania, nadając mu intencję
filtr z "android.intent.action.MAIN"
jako określonym działaniem i
"android.intent.category.LAUNCHER"
jako określoną kategorię:
<activity ... >
<intent-filter ... >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
...
</activity>
Tego rodzaju filtr intencji powoduje, że ikona i etykieta aktywności są wyświetlać w Menu z aplikacjami, umożliwiając użytkownikom uruchomienie aktywności w dowolnym momencie po uruchomieniu i powrót do utworzonego zadania.
Ta druga umiejętność jest ważna. Użytkownicy muszą mieć możliwość opuszczenia zadania, a następnie
wróć do niej później za pomocą tego programu uruchamiającego aktywność. Z tego powodu używaj tylko
dwa
tryby uruchamiania, które oznaczają działania jako zawsze inicjujące zadanie, "singleTask"
i "singleInstance"
, gdy aktywność ma
ACTION_MAIN
i
CATEGORY_LAUNCHER
.
filtr.
Wyobraź na przykład, co mogłoby się stać, gdyby brakowało filtra:
intencja uruchamia aktywność "singleTask"
, inicjuje nowe zadanie, a użytkownik
poświęca na to trochę czasu. Następnie użytkownik używa przycisku strony głównej lub
gest. Zadanie zostanie wysłane w tle i nie będzie widoczne. Gdy użytkownik
nie ma możliwości powrotu do zadania, ponieważ nie jest ono reprezentowane w aplikacji
Menu z aplikacjami.
Jeśli nie chcesz, aby użytkownik mógł wrócić do
ustaw <activity>
finishOnTaskLaunch
elementu
do "true"
. Więcej informacji znajdziesz w sekcji o usuwaniu tylnego stosu.
Dodatkowe informacje o sposobie reprezentowania zadań i działań oraz zarządzania nimi na ekranie Ostatnie jest dostępny w menu Ostatnie ekranu.