Eine Aufgabe ist eine Sammlung von Aktivitäten, mit denen Nutzer interagieren, wenn sie versuchen, in Ihrer App eine Aktion ausführen. Diese Aktivitäten sind in einem Stapel namens Back-Stack in der Reihenfolge ansehen, in der die einzelnen Aktivitäten geöffnet werden.
Beispiel: Eine E-Mail-App kann es eine Aktivität geben, um eine Liste neuer Nachrichten anzuzeigen. Wenn der Nutzer ein Nachricht wird eine neue Aktivität geöffnet, in der Sie diese Nachricht ansehen können. Diese neue Aktivität wird hinzugefügt zum Back Stack hinzu. Wenn die Nutzenden dann auf die neue Aktivität tippt oder die Touch-Geste „Zurück“ und aus dem Stapel herausragt.
Lebenszyklus einer Aufgabe und ihres Back-Stacks
Der Startbildschirm des Geräts ist der Ausgangspunkt für die meisten Aufgaben. Wenn ein Nutzer die das Symbol für eine App oder Verknüpfung im App Launcher oder auf dem Startbildschirm die Aufgabe dieser App in den Vordergrund rückt. Wenn für die App keine Aufgabe vorhanden ist, wird ein neue Aufgabe erstellt und die Hauptaufgabe wird die Aktivität dieser App geöffnet. als Root-Aktivität im Stack.
Wenn die aktuelle Aktivität mit einer anderen beginnt, wird die neue Aktivität an den Anfang verschoben. des Stacks und fokussiert sich. Die vorherige Aktivität bleibt im Stack, wird aber angehalten. Wird eine Aktivität gestoppt, behält das System den aktuellen Status Benutzeroberfläche. Führt der Nutzer die Aktion „Zurück“ aus, ist die aktuelle Aktivität aus dem Stapel gesprungen und zerstört. Die Die vorherige Aktivität wird fortgesetzt und der vorherige Status der Benutzeroberfläche wird wiederhergestellt.
Aktivitäten in der Stapel werden nie neu angeordnet, sondern nur so aufgedrückt, wie sie sind durch die aktuelle Aktivität gestartet und vom Nutzer geschlossen mit der Schaltfläche „Zurück“ oder der Touch-Geste „Zurück“. Daher funktioniert der Back-Stack Last In, First Out-Objektstruktur. Abbildung 1 zeigt eine Zeitachse mit Aktivitäten, die auf einen Back Stack übertragen werden.
<ph type="x-smartling-placeholder">![](https://developer.android.google.cn/static/images/fundamentals/diagram_backstack.png?authuser=9&hl=de)
Während der Nutzer weiter tippt oder die Touch-Geste „Zurück“ zeigt, wird jede Aktivität im Stapel wird geöffnet, um die vorherige anzuzeigen, bis die Nutzenden wieder zur Startseite zurückkehren. oder auf eine andere Aktivität, die zu Beginn der Aufgabe ausgeführt wurde. Wenn alle Aktivitäten aus dem Stapel entfernt werden, existiert die Aufgabe nicht mehr.
Verhalten beim Zurücktippen bei Aktivitäten im Root-Launcher
Root-Launcher-Aktivitäten sind Aktivitäten, die einen Intent deklarieren
Filter mit beiden
ACTION_MAIN
und
CATEGORY_LAUNCHER
Diese Aktivitäten sind einzigartig, weil sie von
den App Launcher und werden zum Starten einer Aufgabe verwendet.
Wenn ein Nutzer von einer Root Launcher-Aktivität aus tippt oder die Touch-Geste „Zurück“ zeigt, behandelt das Ereignis unterschiedlich, je nachdem, welche Android-Version ausgeführt wird.
- Systemverhalten unter Android 11 und niedriger
- Das System beendet die Aktivität.
- Systemverhalten unter Android 12 und höher
Das System verschiebt die Aktivität und ihre Aufgabe in den Hintergrund, anstatt Abschließen der Aktivität. Dieses Verhalten entspricht dem Standardsystemverhalten, zum Verlassen einer App mit der Startbildschirmtaste oder einer Touch-Geste
In den meisten Fällen bedeutet dies, dass Nutzer die App schneller fortsetzen können. Warmzustand erhalten, die App nach einer Kälte vollständig neu starten Bundesstaat/-land.
Wenn Sie eine benutzerdefinierte Zurück-Navigation bereitstellen müssen, empfehlen wir, die AndroidX Activity APIs zu verwenden, anstatt
onBackPressed()
Die AndroidX Activity APIs richten sich automatisch nach den angemessenes Systemverhalten, wenn keine Komponenten das System abfangen Zurücktippen.Wenn Ihre App jedoch
onBackPressed()
verarbeiten Zurück zur Navigation und Beenden der Aktivität. Aktualisieren Sie Ihre Implementierung, um folgende URL aufzurufen: bissuper.onBackPressed()
, anstatt den Vorgang abzuschließen. Anrufensuper.onBackPressed()
verschiebt die Aktivität und ihre Aufgabe in den Hintergrund, wenn angemessen und bietet eine einheitlichere Navigation für Nutzende. in verschiedenen Apps.
Aufgaben im Hintergrund und im Vordergrund
<ph type="x-smartling-placeholder">![](https://developer.android.google.cn/static/images/fundamentals/diagram_multitasking.png?authuser=9&hl=de)
Eine Aufgabe ist eine zusammenhängende Einheit, die in den Hintergrund verschoben werden kann, wenn ein Nutzer eine neue Aufgabe erstellt oder den Startbildschirm aufrufen. Alle Aktivitäten im Hintergrund in der Task angehalten, aber der Back-Stack für die Aufgabe bleibt intakt – die Task den Fokus verliert, während eine andere Aufgabe stattfindet, wie in Abbildung 2 dargestellt. A Die Aufgabe kann dann in den Vordergrund verschoben werden, sodass die Nutzer dort weitermachen können, wo sie aufgehört haben. deaktiviert.
Betrachten Sie den folgenden Ablauf für die aktuelle Aufgabe A, die drei Aktivitäten in seinem Stack, darunter zwei unter der aktuellen Aktivität:
Der Nutzer verwendet die Startbildschirmtaste oder Touch-Geste und startet dann über die App Launcher.
Wenn der Startbildschirm angezeigt wird, geht Aufgabe A in den Hintergrund. Wenn das neue App gestartet wird, startet das System eine Aufgabe für diese App (Aufgabe B) mit einem eigenen Stack von Aktivitäten.
Nach der Interaktion mit der App kehrt der Nutzer zur Startseite zurück und wählt die ursprünglich Aufgabe A gestartet hat.
Jetzt kommt Aufgabe A in den Vordergrund – alle drei Aktivitäten in seinem Stapel sind intakt und die Aktivität oben im Stack wird fortgesetzt. An dieser Stelle Die Nutzenden können auch zu Aufgabe B zurückkehren, indem sie zur Startseite gehen und das App-Symbol auswählen. die diese Aufgabe gestartet haben, oder indem Sie die Aufgabe der App aus den Anruflisten .
Mehrere Aktivitätsinstanzen
<ph type="x-smartling-placeholder">![](https://developer.android.google.cn/static/images/fundamentals/diagram_multiple_instances.png?authuser=9&hl=de)
Da die Aktivitäten im Back-Stack niemals neu angeordnet werden, können Nutzer eine bestimmte Aktivität aus mehr als einer Aktivität starten, wird ein neues wird eine Instanz dieser Aktivität erstellt und in den Stack verschoben, damit jede vorherige Instanz der Aktivität ganz oben erscheint. Daher muss eine können Aktivitäten in Ihrer App mehrmals instanziiert werden, sogar von verschiedenen wie in Abbildung 3 dargestellt.
Navigiert die nutzende Person mithilfe der Schaltfläche „Zurück“ Schaltfläche oder Touch-Geste, werden die Aktivitäten in der Reihenfolge angezeigt, mit jeweils einem eigenen UI-Status. Sie können diese Einstellung wenn eine Aktivität nicht mehr als einmal instanziiert werden soll. Weitere Informationen Weitere Informationen hierzu finden Sie im Abschnitt zur Verwaltung des Aufgaben.
Mehrfensterumgebungen
Wenn Apps gleichzeitig im Mehrfenstermodus ausgeführt werden Umgebung, unterstützt in Android 7.0 (API) Ebene 24) und höher werden die Aufgaben vom System für jedes Fenster separat verwaltet. Jedes kann ein Fenster mehrere Aufgaben enthalten. Dasselbe gilt für Android-Apps, die auf Chromebooks: Das System verwaltet Aufgaben oder Gruppen von Aufgaben auf einer pro Fenster.
Zusammenfassung des Lebenszyklus
So fassen Sie das Standardverhalten für Aktivitäten und Aufgaben zusammen:
Wenn Aktivität A Aktivität B startet, wird Aktivität A gestoppt, das System behält seinen Status bei, beispielsweise seine Scrollposition und in Formulare eingegebener Text. Wenn Der Nutzer tippt in Aktivität B, Aktivität A oder verwendet die Touch-Geste „Zurück“ wird mit dem wiederhergestellten Zustand fortgesetzt.
Wenn der Nutzer eine Aufgabe mit der Startbildschirmtaste oder über die Touch-Geste verlässt, wird die aktuelle die Aktivität gestoppt und die zugehörige Aufgabe in den Hintergrund verschoben wird. Das System behält den Status jeder Aktivität in der Aufgabe. Wenn Nutzende die Aufgabe später fortsetzen, auf das Launcher-Symbol, mit dem die Aufgabe begonnen hat, Vordergrund und setzt die Aktivität oben im Stack fort.
Wenn der Nutzer tippt oder die Touch-Geste „Zurück“ zeigt, wird die aktuelle Aktivität aus und zerstört werden. Die vorherige Aktivität im Stack wird fortgesetzt. Wann? eine Aktivität gelöscht wird, behält das System den Status der Aktivität nicht bei.
Dieses Verhalten unterscheidet sich bei Aktivitäten des Root-Launchers. Deine App wird auf einem Gerät mit Android 12 oder höher ausgeführt.
Aktivitäten können mehrfach instanziiert werden, sogar aus anderen Aufgaben.
Aufgaben verwalten
Android verwaltet Aufgaben und Back-Stack, indem alle Aktivitäten, die nacheinander in derselben Aufgabe begonnen haben, Out-Stack. Das funktioniert bei den meisten Apps gut und ihr müsst euch keine Gedanken wie Ihre Aktivitäten mit Aufgaben verknüpft sind oder wie sie im Hintergrund existieren Stacks.
Sie können aber auch entscheiden, das normale Verhalten zu unterbrechen. Vielleicht möchten Sie z. B., dass eine Aktivität in Ihrer App mit einer neuen Aufgabe beginnt, gestartet, statt in die aktuelle Aufgabe eingeordnet zu werden. Oder wenn Sie eine Aktivität arbeiten, können Sie eine vorhandene Instanz dieser Instanz verwenden, anstatt und eine neue Instanz auf dem Back-Stack erstellen. Oder Sie könnten Sie möchten, dass alle Aktivitäten mit Ausnahme der Stammaktivität aus Ihrem Back Stack gelöscht werden wenn Nutzende die Aufgabe verlassen.
Diese und weitere Funktionen können Sie mithilfe von Attributen in der
<activity>
-Manifestelement
und Flags im Intent, den Sie an
startActivity()
Dies sind die <activity>
-Hauptattribute, die Sie zum Verwalten von Aufgaben verwenden können:
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
Und das sind die Principal Intent-Flags, die Sie verwenden können:
In den folgenden Abschnitten wird die Verwendung dieser Manifestattribute erläutert und Intent-Flags, um zu definieren, wie Aktivitäten mit Aufgaben verknüpft werden im Back-Stack verhalten.
Außerdem werden Überlegungen dazu erläutert, wie Aufgaben und Aktivitäten werden auf dem Bildschirm „Zuletzt verwendet“ dargestellt und verwaltet. Normalerweise lassen Sie die definieren Sie, wie Ihre Aufgaben und Aktivitäten Letzte angezeigt und Sie müssen dieses Verhalten nicht ändern. Weitere Informationen finden Sie unter Bildschirm „Letzte“.
Startmodi definieren
Mit Startmodi können Sie definieren, wie eine neue Instanz einer Aktivität verknüpft wird mit der aktuellen Aufgabe. Sie können Startmodi auf zwei Arten definieren: finden Sie in den folgenden Abschnitten:
-
Wenn Sie eine Aktivität in Ihrer Manifestdatei deklarieren, können Sie festlegen, mit Aufgaben verknüpft sind.
-
Wenn du anrufst
startActivity()
, können Sie im FeldIntent
, in denen erklärt wird, wie (oder ob) die neue Aktivität mit der aktuellen Aufgabe verknüpft ist.
Wenn also Aktivität A Aktivität B startet, kann Aktivität B in ihrem Manifest definiert werden. und wie sie mit der aktuellen Aufgabe verknüpft ist, und Aktivität A kann ein Intent-Flag verwenden. um anzufordern, wie Aktivität B mit der aktuellen Aufgabe verknüpft werden kann.
Wenn beides definieren, wie Aktivität B mit einer Aufgabe verknüpft ist. wie im Intent definiert, und wird gegenüber der Anfrage von Aktivität B berücksichtigt, in seinem Manifest definiert ist.
Startmodi mithilfe der Manifestdatei definieren
Wenn Sie eine Aktivität in Ihrer Manifestdatei deklarieren, können Sie festlegen,
die Aktivitäten mit einer Aufgabe verknüpfen,
<activity>
-Elements
launchMode
-Attribut.
Dem Attribut launchMode
können fünf Startmodi zugewiesen werden:
"standard"
- Standardmodus. Das System erstellt eine neue Instanz der Aktivität in der Aufgabe. und leitet den Intent dorthin weiter. Die Aktivität kann mehrere Male instanziiert wurden, kann jede Instanz zu verschiedenen Aufgaben gehören. Eine Aufgabe kann mehrere Instanzen haben.
"singleTop"
- Wenn bereits eine Instanz der Aktivität oben in der aktuellen Aufgabe vorhanden ist,
leitet das System den Intent über einen Aufruf an seine
onNewIntent()
anstatt eine neue Instanz der Aktivität zu erstellen. Die Aktivität ist mehrere Instanzen instanziiert wurden, kann jede Instanz zu verschiedenen Aufgaben gehören. und eine Aufgabe kann mehrere Instanzen haben (aber nur, wenn die Aktivität des Back-Stacks ist keine vorhandene Instanz der Aktivität).
Angenommen, der Back-Stack einer Aufgabe besteht aus der Stammaktivität A mit Aktivitäten B, C und D oben (der Stapel ist also A-B-C-D mit D oben). Intent für eine Aktivität des Typs D ein. Wenn „D“ die Standardeinstellung
"standard"
hat, starten wird eine neue Instanz der Klasse gestartet und der Stapel wird A-B-C-D-D. Lautet der Startmodus von D jedoch"singleTop"
, wird die vorhandene Instanz von D den Intent überonNewIntent()
empfängt, weil es sich ganz oben im Stack befindet, und der Stack bleibt A-B-C-D. Wenn: andererseits eine dann für eine Aktivität vom Typ B eingeht, wird eine neue Instanz von B des Stacks, auch wenn der Startmodus"singleTop"
ist."singleTask"
- Das System erstellt die Aktivität am Anfang einer neuen Aufgabe oder sucht nach
zu einer bestehenden Aufgabe mit der gleichen Affinität. Wenn eine Instanz des
bereits vorhanden ist, leitet das System
Intent an die vorhandene Instanz durch einen Aufruf der
onNewIntent()
an, statt eine neue Instanz zu erstellen. In der Zwischenzeit die darüber hinausgehenden Aktivitäten zerstört werden.
"singleInstance"
.- Das Verhalten ist dieselbe wie bei
"singleTask"
, mit der Ausnahme, dass das System keine weiteren Aktivitäten in die Aufgabe ein, die die Instanz beinhaltet. Bei der Aktivität handelt es sich immer und einziges Mitglied seiner Aufgabe. Alle Aktivitäten, die mit dieser gestartet wurden, werden geöffnet in eine separate Aufgabe ausführen.
"singleInstancePerTask"
.- Die Aktivität kann nur als Stammaktivität der Aufgabe ausgeführt werden. Die erste
Aktivität, die die Aufgabe erstellt hat. Daher kann es nur eine Instanz geben.
dieser Aktivität in einer Aufgabe. Im Gegensatz zum Startmodus
singleTask
kann die Aktivität in mehreren Instanzen in verschiedenen Aufgaben gestartet werden,FLAG_ACTIVITY_MULTIPLE_TASK
oderFLAG_ACTIVITY_NEW_DOCUMENT
gesetzt ist.
Als weiteres Beispiel deklariert die Android-Browser-App, dass der Webbrowser
Aktivität wird immer in einer eigenen Aufgabe geöffnet, indem das Attribut singleTask
angegeben wird.
Startmodus in <activity>
-Elements. Wenn deine App also einen Intent ausgibt, um die Android-App zu öffnen,
Browser verwenden, werden seine Aktivitäten nicht in derselben Aufgabe wie Ihre App platziert. Stattdessen
wird entweder eine neue Aufgabe für den Browser gestartet oder, falls der Browser bereits eine Aufgabe hat,
im Hintergrund ausgeführt wird, wird diese Aufgabe zur Bewältigung der neuen
die Nutzerabsicht verstehen.
Unabhängig davon, ob eine Aktivität in einer neuen Aufgabe beginnt oder
die Aktivität, die sie gestartet hat, die Schaltfläche "Zurück" und die Touch-Geste
Nutzer zur vorherigen Aktivität zu. Wenn Sie jedoch eine Aktivität starten,
gibt an
Startmodus singleTask
und eine Instanz dieser Aktivität existiert in einem
Hintergrund-Task an, dann wird diese ganze Aufgabe in den Vordergrund gebracht. An dieser Stelle
enthält der Back-Stack alle Aktivitäten aus der Aufgabe,
ganz oben im Stack. Abbildung 4 zeigt diese Art von Szenario.
![](https://developer.android.google.cn/static/images/fundamentals/diagram_backstack_singletask_multiactivity.png?authuser=9&hl=de)
"singleTask"
“ wird dem Back-Stack hinzugefügt. Wenn die Aktivität
bereits Teil einer Hintergrundaufgabe mit einem eigenen Back-Stack ist,
auch der gesamte Back-Stack nach vorn kommt,
Aufgabe.Weitere Informationen zur Verwendung von Startmodi in der Manifestdatei findest du in der
Dokumentation zum <activity>
-Element
Startmodi mithilfe von Intent-Flags definieren
Beim Starten einer Aktivität können Sie die Standardverknüpfung einer Aktivität ändern
Aufgabe erledigt, indem Sie Flags in den Intent aufnehmen, den Sie an
startActivity()
Mit den folgenden Flags können Sie das Standardverhalten ändern:
FLAG_ACTIVITY_NEW_TASK
Das System startet die Aktivität in einer neuen Aufgabe. Wenn bereits eine Task für den gestartete Aktivität, wird diese Aufgabe mit ihrer der letzte wiederhergestellt wurde und die Aktivität den neuen Intent erhält in
onNewIntent()
Dies führt zum gleichen Verhalten wie der
"singleTask"
Behandelter WertlaunchMode
im vorherigen Abschnitt.FLAG_ACTIVITY_SINGLE_TOP
Wenn es sich bei der gestarteten Aktivität um die aktuelle Aktivität handelt, Stack nutzt, empfängt die vorhandene Instanz einen Aufruf
onNewIntent()
, anstatt eine neue Instanz der Aktivität zu erstellen.Dies führt zum gleichen Verhalten wie der
"singleTop"
launchMode
-Wert aus dem vorherigen Abschnitt.FLAG_ACTIVITY_CLEAR_TOP
Wenn die gestartete Aktivität bereits in der aktuellen Aufgabe ausgeführt wird, dann – anstatt eine neue Instanz dieser Aktivität zu starten – alle anderen Aktivitäten außer Kraft setzen. Die Absicht ist, an die fortgesetzte Instanz der Aktivität übergeben,
onNewIntent()
Es gibt keinen Wert für das Attribut
launchMode
, der dieses Verhalten bewirkt.FLAG_ACTIVITY_CLEAR_TOP
wird am häufigsten in Verbindung mitFLAG_ACTIVITY_NEW_TASK
. In Kombination werden diese Flags eine bestehende Aktivität in einer anderen Aufgabe zu finden auf den Intent reagieren kann.
Umgang mit gemeinsamen Interessen
Eine Affinität gibt an, welche Aufgabe eine Aktivität „bevorzugt“ zu finden. Von Standardmäßig haben alle Aktivitäten aus derselben App eine Affinität zueinander: sie „bevorzugen“ an derselben Aufgabe zu arbeiten.
Sie können die Standardaffinität für eine Aktivität jedoch ändern. Definierte Aktivitäten die in verschiedenen Apps eine gemeinsame Affinität haben, und Aktivitäten, die in derselben App definiert sind unterschiedliche Aufgabenaffinitäten zugewiesen werden können.
Sie können die Affinität einer Aktivität mithilfe der taskAffinity
ändern
Attribut von <activity>
-Elements.
Das Attribut taskAffinity
verwendet einen Stringwert, der anders sein muss als
Standardpaketname
in <manifest>
deklariert
-Element, da das System anhand dieses Namens die Standardaufgabe
Affinität für die App.
Die Affinität kommt in zwei Situationen ins Spiel:
Wenn der Intent, der eine Aktivität startet, das Ereignis
FLAG_ACTIVITY_NEW_TASK
melden.Eine neue Aktivität wird standardmäßig in der Aufgabe der Aktivität gestartet, die angerufen
startActivity()
Es wird auf denselben Back-Stack wie der Aufrufer verschoben.Wenn der an
startActivity()
übergebene Intent jedoch den ParameterFLAG_ACTIVITY_NEW_TASK
sucht das System nach einer anderen Aufgabe für die neue Aktivität. Häufig ist das eine neue Aufgabe. Das muss aber nicht so sein. Wenn es eine mit der gleichen Affinität wie die neue Aktivität hat, in diese Aufgabe eingebunden wird. Falls nicht, beginnt eine neue Aufgabe.Wenn dieses Flag dazu führt, dass eine Aktivität mit einer neuen Aufgabe beginnt und der Nutzer die Startbildschirmtaste oder Touch-Geste zum Verlassen der Seite, muss es für den Nutzer eine Möglichkeit geben, und navigieren Sie zurück zur Aufgabe. Einige Entitäten, z. B. der Benachrichtigungsmanager, Aktivitäten immer im Rahmen einer externen Aufgabe beginnen, niemals als Teil ihrer eigenen, Sie setzen
FLAG_ACTIVITY_NEW_TASK
immer in den Intents, an die sie übergeben werdenstartActivity()
.Wenn eine externe Instanz, können Sie mit diesem Flag Ihre Aktivität aufrufen. Achten Sie darauf, dass der Nutzer um auf unabhängige Weise die gestartete Aufgabe, z. B. über ein Launcher-Symbol, wobei die Root-Aktivität die Aufgabe hat eine
CATEGORY_LAUNCHER
Intent-Filter. Weitere Informationen finden Sie im Abschnitt Aufgaben starten.Wenn eine Aktivität ein
allowTaskReparenting
-Element hat Attribut auf"true"
festgelegt.In diesem Fall kann die Aktivität von der begonnenen Aufgabe zur Aufgabe verschoben werden, die sie bereits hat. eine Affinität, wenn diese Aufgabe in den Vordergrund kommt.
Angenommen, eine Aktivität meldet ausgewählte Städte als Teil einer Reise-App definiert. Es hat dieselbe Affinität wie andere Aktivitäten in derselben App, die standardmäßige App-Affinität diesem Attribut neu übergeordnet werden.
Wenn eine Ihrer Aktivitäten den der Wetterberichtsfunktion gehört, gehört sie anfangs zur gleichen Aufgabe wie Ihr Aktivitäten. Wird jedoch die Aufgabe der Reise-App im Vordergrund angezeigt, Wetterberichter-Aktivität wird dieser Aufgabe neu zugewiesen und darin angezeigt.
Back-Stack leeren
Wenn Nutzende eine Aufgabe für längere Zeit verlassen, löscht das System alle Aufgaben in allen Aktivitäten mit Ausnahme der Stammaktivität. Wenn Nutzende zur Aufgabe zurückkehren, wird nur die Root-Aktivität wiederhergestellt. Das System verhält sich dann entsprechend Annahme, dass nach einem über längere Zeit abgebrochen haben. und kehren zur Aufgabe zurück, um etwas Neues anzufangen.
Es gibt einige Aktivitätsattribute, mit denen Sie dieses Verhalten ändern können:
alwaysRetainTaskState
- Wenn dieses Attribut in der Stammaktivität einer Aufgabe auf
"true"
gesetzt ist, das soeben beschriebene Standardverhalten nicht eintritt. Die Aufgabe behält alle Aktivitäten in ihrem Stack auch nach einem langen Zeitraum. clearTaskOnLaunch
Wenn dieses Attribut in der Stammaktivität einer Aufgabe auf
"true"
gesetzt ist, wird die Aufgabe wird bis zur Root-Aktivität gelöscht, wenn der Nutzer die Aufgabe verlässt und zurückkehrt. Es ist also das Gegenteil vonalwaysRetainTaskState
Die Die Nutzenden kehren zur Aufgabe immer im ursprünglichen Zustand zurück, auch nachdem sie die für einen Moment.finishOnTaskLaunch
Dieses Attribut hat das Format
clearTaskOnLaunch
, aber sie arbeitet nur an einer einzigen Aktivität, nicht an einer ganzen Aufgabe. Es kann auch dazu führen, alle Aktivitäten bis auf die Stammaktivität zu beenden. Wenn es auf"true"
, die Aktivität bleibt nur für die aktuelle Sitzung Teil der Aufgabe. Wenn der Nutzer die Aufgabe verlässt und dann zur Aufgabe zurückkehrt, ist sie nicht mehr vorhanden.
Aufgaben starten
Sie können eine Aktivität als Einstiegspunkt für eine Aufgabe einrichten, indem Sie ihr einen Intent zuweisen
Filter mit "android.intent.action.MAIN"
als angegebene Aktion und
"android.intent.category.LAUNCHER"
als angegebene Kategorie:
<activity ... >
<intent-filter ... >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
...
</activity>
Ein Intent-Filter dieser Art bewirkt, dass ein Symbol und ein Label für die Aktivität im App Launcher angezeigt, sodass Nutzer die Aktivität starten und jederzeit nach dem Start zu der von ihr erstellten Aufgabe zurückkehren.
Diese zweite Fähigkeit ist wichtig. Nutzende müssen in der Lage sein, eine Aufgabe zu verlassen
können Sie sie später über diesen Aktivitäts-Launcher aufrufen. Verwenden Sie daher nur
die beiden
Startmodi, die Aktivitäten so kennzeichnen, dass sie immer eine Aufgabe initiieren, "singleTask"
und "singleInstance"
, wenn die Aktivität eine
ACTION_MAIN
und ein
CATEGORY_LAUNCHER
aus.
Stellen Sie sich zum Beispiel vor, was passieren würde, wenn der Filter fehlt: ein
Intent startet eine "singleTask"
-Aktivität, initiiert eine neue Aufgabe, und der Nutzer
an dieser Aufgabe arbeitet. Der Nutzer verwendet dann die Home-Taste oder
Touch-Geste. Die Aufgabe wird jetzt in den Hintergrund verschoben und ist nicht sichtbar. Die Nutzenden
keine Möglichkeit hat, zur Aufgabe zurückzukehren, da sie nicht in der App dargestellt wird.
Launcher.
Wenn Sie nicht möchten, dass der Nutzer zu einem
Aktivität, legen Sie die <activity>
fest.
finishOnTaskLaunch
des Elements
an "true"
. Weitere Informationen finden Sie im Abschnitt Back-Stack löschen.
Weitere Informationen dazu, wie Aufgaben und Aktivitäten dargestellt und verwaltet werden auf dem Bildschirm „Letzte“ ist unter Letzte .