Aufgaben und der Back Stack

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">
</ph>
Abbildung 1: Darstellung, wie jede neue Aktivität in einem ein Element zum Back Stack hinzu. Wenn Nutzende auf das Display tippen oder Im Hintergrund wird die aktuelle Aktivität gelöscht und die vorherige Aktivität einen Lebenslauf erhalten.

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: bis super.onBackPressed(), anstatt den Vorgang abzuschließen. Anrufen super.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">
</ph>
Abbildung 2: Zwei Aufgaben: Aufgabe B erhält die im Vordergrund, während Aufgabe A im Hintergrund ist und fortsetzen.

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:

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

  2. 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">
</ph>
Abbildung 3: Eine einzelne Aktivität kann mit mehreren Mal.

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:

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 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:

  1. "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.
  2. "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 über onNewIntent() 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.

  3. "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.
  4. "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.
  5. "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 oder FLAG_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.

<ph type="x-smartling-placeholder">
</ph>
Abbildung 4: Darstellung dessen, wie eine Aktivität beim Start Modus „"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 Wert launchMode 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 mit FLAG_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:

  1. 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 Parameter FLAG_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 werden startActivity().

    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.

  2. 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 von alwaysRetainTaskState 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 .

Weitere Ressourcen