Mit der intelligenten „Zurück“-Geste, einer Bedienung über Gesten, können Nutzerinnen und Nutzer sehen, wohin sie durch das Zurückwischen gelangen.
Wenn Sie beispielsweise eine „Zurück“-Geste verwenden, kann eine animierte Vorschau des Startbildschirms hinter Ihrer App angezeigt werden, wie im Mockup in Abbildung 1 dargestellt.
Ab Android 15 ist die Entwickleroption für intelligente „Zurück“-Geste-Animationen nicht mehr verfügbar. Systemanimationen wie „Zurück zum Startbildschirm“, „Aufgabenübergreifend“ und „Aktivitätenübergreifend“ werden jetzt für Apps angezeigt, die die intelligente „Zurück“-Geste entweder vollständig oder auf Aktivitätsebene aktiviert haben.
Sie können diese Animation zum Zurückkehren zum Startbildschirm testen (wie in einem späteren Abschnitt auf dieser Seite beschrieben).
Wenn Sie die Vorhersage für die Zurück-Geste unterstützen möchten, müssen Sie Ihre App aktualisieren. Verwenden Sie dazu die abwärtskompatible OnBackPressedCallback in AndroidX Activity 1.6.0 oder höher oder die neue Plattform-API OnBackInvokedCallback.
Die meisten Apps verwenden die abwärtskompatible AndroidX API.
Dieses Update bietet einen Migrationspfad, um die Rückwärtsnavigation richtig abzufangen. Dazu müssen die Zurück-Abfangungen aus KeyEvent.KEYCODE_BACK und alle Klassen mit onBackPressed-Methoden wie Activity und Dialog durch die neuen System-Back-APIs ersetzt werden.
Codelab und Google I/O-Video
Zusätzlich zu dieser Dokumentation können Sie auch unser Codelab ausprobieren. Sie bietet eine Implementierung eines gängigen Anwendungsfalls für eine WebView, die die vorhersagende Zurück-Geste mit AndroidX Activity APIs verarbeitet.
In unserem Google I/O-Video finden Sie weitere Beispiele für die Implementierung der AndroidX- und Plattform-APIs.
Benutzerdefinierte „Zurück“-Gesten in Compose verarbeiten
Compose bietet die PredictiveBackHandler-Composable-Funktion zum Verarbeiten benutzerdefinierter Zurück-Gesten. Mit dieser API können Sie auf die Zurück-Geste reagieren und erhalten ein Flow von BackEventCompat-Objekten, mit denen Sie benutzerdefinierte Animationen oder Übergänge implementieren können, während der Nutzer wischt.
Damit Sie PredictiveBackHandler verwenden können, muss Ihre App die androidx.activity:activity-compose-Abhängigkeit (Version 1.8.0 oder höher) enthalten:
// In your build.gradle.kts file:
dependencies {
implementation("androidx.activity:activity-compose:1.8.0")
}
PredictiveBackHandler(enabled = isBackHandlerEnabled) { progress: Flow<BackEventCompat> -> try { progress.collect { backEvent -> // Update your UI or animation based on backEvent.progress. } // Handle the final back action (e.g., navigate back). } catch (e: CancellationException) { // Back gesture was cancelled, reset your UI. } }
Wenn Sie nur die Zurück-Geste abfangen möchten, ohne den Fortschritt zu verfolgen, verwenden Sie BackHandler.
Apps aktualisieren, die die Standard-Rückwärtsnavigation verwenden
Die intelligente „Zurück“-Geste ist standardmäßig aktiviert.
Wenn Ihre App Fragments oder die Navigation Component verwendet, führen Sie auch ein Upgrade auf AndroidX Activity 1.6.0 oder höher durch.
App aktualisieren, die benutzerdefinierte Rückwärtsnavigation verwendet
Wenn in Ihrer App ein benutzerdefiniertes Verhalten für die Zurück-Schaltfläche implementiert ist, gibt es je nachdem, ob AndroidX verwendet wird und wie die Rückwärtsnavigation gehandhabt wird, unterschiedliche Migrationspfade.
| So geht Ihre App mit der Rückwärtsnavigation um | Empfohlener Migrationspfad (Link auf dieser Seite) |
| AndroidX-APIs | Bestehende AndroidX-Implementierung der „Zurück“-Geste migrieren |
| Nicht unterstützte Plattform-APIs | Eine AndroidX-App mit nicht unterstützten APIs für die Rückwärtsnavigation zu AndroidX-APIs migrieren |
AndroidX-Implementierung der Rückwärtsnavigation migrieren
Dieser Anwendungsfall ist der häufigste (und der am meisten empfohlene). Sie gilt für neue oder vorhandene Apps, die die benutzerdefinierte Verarbeitung der Bedienung über Gesten mit OnBackPressedDispatcher implementieren, wie unter Benutzerdefinierte Zurück-Navigation bereitstellen beschrieben.
Damit APIs, die bereits OnBackPressedDispatcher verwenden (z. B. Fragments und die Navigation Component), nahtlos mit der vorhersagenden Zurück-Geste funktionieren, müssen Sie ein Upgrade auf AndroidX Activity 1.6.0 oder höher durchführen.
// In your build.gradle file:
dependencies {
// Add this in addition to your other dependencies
implementation "androidx.activity:activity:1.6.0"
}
Eine AndroidX-App mit nicht unterstützten APIs für die Rückwärtsnavigation zu AndroidX-APIs migrieren
Wenn Ihre App AndroidX-Bibliotheken verwendet, aber die nicht unterstützten APIs für die Rückwärtsnavigation implementiert oder darauf verweist, müssen Sie zu AndroidX-APIs migrieren, um das neue Verhalten zu unterstützen.
So migrieren Sie nicht unterstützte APIs zu AndroidX-APIs:
Migrieren Sie die Logik für die Verarbeitung der Zurück-Schaltfläche zu
OnBackPressedDispatchervon AndroidX mit einer Implementierung vonOnBackPressedCallback. Eine ausführliche Anleitung finden Sie unter Benutzerdefinierte Zurück-Navigation bereitstellen.Deaktivieren Sie die
OnBackPressedCallback, wenn Sie die Abfangung der Zurück-Geste beenden möchten.Das Abfangen von Zurück-Ereignissen mit
OnBackPressedoderKeyEvent.KEYCODE_BACKsollte nicht mehr erfolgen.Aktualisieren Sie auf AndroidX Activity 1.6.0 oder höher.
// In your build.gradle file: dependencies { // Add this in addition to your other dependencies implementation "androidx.activity:activity:1.6.0" }
Intelligente „Zurück“-Geste deaktivieren
Wenn Sie die Speicherung deaktivieren möchten, setzen Sie in AndroidManifest.xml im Tag <application> das Flag android:enableOnBackInvokedCallback auf false.
<application
...
android:enableOnBackInvokedCallback="false"
... >
...
</application>
Wenn Sie diesen Wert auf „false“ setzen, passiert Folgendes:
- Deaktiviert die Systemanimation für die intelligente „Zurück“-Geste.
- Ignoriert
OnBackInvokedCallback, aberOnBackPressedCallback-Anrufe funktionieren weiterhin.
Deaktivierung auf Aktivitätsebene
Mit dem Flag android:enableOnBackInvokedCallback können Sie intelligente Systemanimationen auf Aktivitätsebene deaktivieren. So ist es einfacher, große Apps mit mehreren Aktivitäten zu intelligenten Touch-Gesten zu migrieren.
Der folgende Code zeigt ein Beispiel für enableOnBackInvokedCallback, das so festgelegt ist, dass die Systemanimation „Zurück zum Startbildschirm“ über MainActivity aktiviert wird:
<manifest ...>
<application . . .
android:enableOnBackInvokedCallback="false">
<activity
android:name=".MainActivity"
android:enableOnBackInvokedCallback="true"
...
</activity>
<activity
android:name=".SecondActivity"
android:enableOnBackInvokedCallback="false"
...
</activity>
</application>
</manifest>
Beachten Sie bei der Verwendung des Flags android:enableOnBackInvokedCallback Folgendes:
- Wenn Sie
android:enableOnBackInvokedCallback=falsefestlegen, werden die vorhersagenden Rückwärtsanimationen entweder auf Aktivitäts- oder auf App-Ebene deaktiviert, je nachdem, wo Sie das Tag festlegen. Das System wird angewiesen, Aufrufe der Plattform-APIOnBackInvokedCallbackzu ignorieren. Aufrufe vonOnBackPressedCallbackwerden jedoch weiterhin ausgeführt, daOnBackPressedCallbackabwärtskompatibel ist und dieonBackPressedAPI aufruft, die vor Android 13 nicht unterstützt wird. - Wenn Sie das Flag
enableOnBackInvokedCallbackauf App-Ebene festlegen, wird der Standardwert für alle Aktivitäten in der App festgelegt. Sie können den Standardwert pro Aktivität überschreiben, indem Sie das Flag auf Aktivitätsebene festlegen, wie im vorherigen Codebeispiel gezeigt.
Richtlinien für Rückrufe
Beachten Sie die folgenden Richtlinien, wenn Sie die unterstützten System-Back-Callbacks verwenden: PredictiveBackHandler oder BackHandler (für Compose), OnBackPressedCallback oder OnBackInvokedCallback.
UI-Status ermitteln, mit dem die einzelnen Callbacks aktiviert und deaktiviert werden
Der UI-Status ist eine Property, die die Benutzeroberfläche beschreibt. Wir empfehlen, die folgenden allgemeinen Schritte auszuführen.
Bestimmen Sie den UI-Status, der die einzelnen Callbacks aktiviert und deaktiviert.
Definieren Sie diesen Status mit einem Observable Data Holder-Typ wie
StateFlowoder Compose State und aktivieren oder deaktivieren Sie den Callback, wenn sich der Status ändert.
Wenn in Ihrer App zuvor eine Back-Logik mit bedingten Anweisungen verknüpft war, reagieren Sie möglicherweise auf das Back-Ereignis, nachdem es bereits eingetreten ist. Vermeiden Sie dieses Muster bei neueren Callbacks. Verschieben Sie den Callback nach Möglichkeit aus der bedingten Anweisung heraus und verknüpfen Sie ihn stattdessen mit einem beobachtbaren Datenhaltertyp.
System-Back-Callbacks für die UI-Logik verwenden
Die UI-Logik bestimmt, wie die Benutzeroberfläche angezeigt wird. Verwenden Sie System-Back-Callbacks, um UI-Logik auszuführen, z. B. um ein Dialogfeld anzuzeigen oder eine Animation auszuführen.
Wenn Ihre App ein OnBackPressedCallback oder ein OnBackInvokedCallback mit PRIORITY_DEFAULT oder PRIORITY_OVERLAY ermöglicht, werden die intelligenten „Zurück“-Geste-Animationen nicht ausgeführt und Sie müssen das Zurück-Ereignis verarbeiten. Erstellen Sie diese Callbacks nicht, um Geschäftslogik auszuführen oder zu protokollieren.
Verwenden Sie die folgenden Ansätze, wenn in Ihrer App Geschäftslogik ausgeführt oder protokolliert werden muss, wenn der Nutzer zurückwischt:
- In Compose:Loggen Sie innerhalb des
onCleared()-Rückrufs einesViewModel, der mit dem Compose-Ziel verknüpft ist. Dies ist das beste Signal, um zu wissen, wann ein Compose-Ziel aus dem Backstack entfernt und zerstört wird. - Android 16 und höher:Verwenden Sie
OnBackInvokedCallbackmitPRIORITY_SYSTEM_NAVIGATION_OBSERVER. Dadurch wird ein Observer-Callback erstellt, der das Back-Ereignis nicht verarbeitet. Sie können diesen Callback beispielsweise registrieren, wenn der Nutzer von der Stammaktivität zurückwischt (und Ihre App verlässt), um das Zurück-Ereignis zu protokollieren oder Geschäftslogik auszuführen, während die Animation „Zurück zum Startbildschirm“ weiterhin abgespielt wird. - In View-basierten Apps:Protokollieren Sie innerhalb von Lebenszyklus- oder Backstack-Callbacks, anstatt Back-Ereignisse zu verarbeiten:
- Prüfen Sie für Aktivitätsübergänge, ob
isFinishinginnerhalb vonActivity.onDestroy()trueist. - Prüfen Sie bei Fragmentübergängen, ob
isRemovinginnerhalb des View-Lebenszyklus des FragmentstrueistonDestroy(), oder verwenden SieFragmentManager.OnBackStackChangedListener(onBackStackChangeStarted/onBackStackChangeCommitted).
- Prüfen Sie für Aktivitätsübergänge, ob
Callbacks mit nur einer Aufgabe erstellen
Sie können dem Dispatcher mehrere Callbacks hinzufügen. Die Callbacks werden einem Stapel hinzugefügt. Der zuletzt hinzugefügte aktivierte Callback verarbeitet die nächste Zurück-Geste mit einem Callback pro Zurück-Geste.
Es ist einfacher, den aktivierten Status eines Callbacks zu verwalten, wenn dieser Callback nur für eine Aufgabe zuständig ist. Beispiel:

Abbildung 2 zeigt, wie Sie mehrere Callbacks im Stack haben können, die jeweils für eine Aufgabe zuständig sind. In Compose werden Callbacks vom innersten zum äußersten Composable ausgewertet. Ein Callback wird nur ausgeführt, wenn die Callbacks, die ihm im Stapel vorangehen, deaktiviert sind:
- Die Frage „Möchten Sie wirklich…?“
PredictiveBackHandlerist aktiviert, wenn der Nutzer Daten in ein Formular eingibt, und andernfalls deaktiviert. Wenn diese Option aktiviert ist, wird die Zurück-Geste abgefangen, um ein Bestätigungsdialogfeld oder eine benutzerdefinierte In-App-Animation anzuzeigen. - Der
BackHandlerauf Bildschirmebene wird ausgeführt, wenn der vorherige Callback deaktiviert ist. In diesem Beispiel ist sie deaktiviert. - Der
NavHost-Callback verarbeitet die Rückwärtsnavigation, um Ziele aus dem Backstack zu entfernen, wenn vorherige benutzerdefinierte Callbacks deaktiviert sind. - Schließlich verarbeitet das System die Zurück-Geste, wenn alle vorherigen Rückrufe deaktiviert sind. Wenn sich der Backstack am Stammziel befindet, löst das System Animationen auf Systemebene aus, z. B. „Zurück zum Startbildschirm“, „Aktivitätenübergreifend“ und „Aufgabenübergreifend“.
Das gleiche Stapelverhalten gilt für View-basierte Apps: Die zuletzt hinzugefügte aktivierte OnBackPressedCallback hat Vorrang. Wenn sie nicht vorhanden ist, wird auf FragmentManager zurückgegriffen und schließlich auf die Systemrücktaste.
Animation für intelligente „Zurück“-Geste testen
Ab Android 15 sind Systemanimationen wie „Zurück zum Startbildschirm“, „Aufgabenübergreifend“ und „Aktivitätenübergreifend“ standardmäßig für Apps aktiviert, die die intelligente „Zurück“-Touchgeste unterstützen. Sie sind nicht mehr hinter einer Entwickleroption verborgen.
Auf Geräten mit Android 13 oder Android 14 können Sie die Entwickleroption aktivieren, um die in Abbildung 1 gezeigte Animation für die Rückkehr zum Startbildschirm zu testen:
Rufen Sie auf Ihrem Gerät die Einstellungen > System > Entwickleroptionen auf.
Wählen Sie Animationen für intelligente „Zurück“-Gesten aus.
Starten Sie die aktualisierte App und verwenden Sie die Zurück-Geste, um sie in Aktion zu sehen.