navigationevent
| Letzte Aktualisierung | Stabile Version | Releasekandidat | Betarelease | Alpha-Release | 
|---|---|---|---|---|
| 8. Oktober 2025 | - | - | 1.0.0-beta01 | - | 
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von „navigationevent“ hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle für Ihre App oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-beta01") }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Lassen Sie es uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können für ein vorhandenes Problem stimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Für dieses Artefakt gibt es keine Versionshinweise.
Version 1.0
Version 1.0.0-beta01
8. Oktober 2025
androidx.navigationevent:navigationevent-*:1.0.0-beta01 ist veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
API-Änderungen
- Korrigieren Sie die Annotation FloatRangefürNavigationEvent.touchXundNavigationEvent.touchY. Diese Werte stellen absolute Pixelkoordinaten dar und haben keine Obergrenze von1.0. (I4b205, b/445989313)
- Refaktorieren Sie die zusammensetzbare Funktion NavigationEventDispatcherOwnerinrememberNavigationEventDispatcherOwner. Die Funktion gibt jetzt direkt denNavigationEventDispatcherOwnerzurück. Verwenden SieCompositionLocalProvider, um diesen Inhaber für eine untergeordnete Komposition anzugeben. (I874b2, b/444446629)
Version 1.0.0-alpha09
24. September 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha09 ist veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.
API-Änderungen
- Verwenden Sie direkt das Singleton-Objekt NavigationEventTransitionState.Idle, anstattIdle()zu instanziieren. (Ic7d9e, b/444734264)
- Machen Sie Convenience-Konstruktoren intern. Rufen Sie Instanzen über öffentliche NavigationEventDispatcher.historyanstelle einer direkten Konstruktion ab. (I3b7e0, b/444734264)
- Erfordert die Erstellung von NavigationEventStateüberrememberNavigationEventState; Konstruktor ist jetzt intern. (Ie143c, b/444734264)
- Übernehmen Sie onBackCompletedFallbackund ersetzen Sie die Verwendungen vonfallbackOnBackPressedund den Konstruktorparameter. Das Verhalten ist unverändert. Die Methode wird nur bei abgeschlossenen, nicht verarbeiteten Back-Events aufgerufen. (Idabe9, b/444734264)
- Der primäre Konstruktor von NavigationEventHistory(mergedHistory, currentIndex)ist jetztinternal. Externe Nutzer müssen die öffentlichen Konstruktoren (entweder den leeren Konstruktor oder den partitionsbasierten Konstruktor) verwenden, um Instanzen zu erstellen. (I1c047, b/444734264)
- View.setViewTreeNavigationEventDispatcherOwnerakzeptiert jetzt auch einen Nullwert für den Inhaber (Ic9eb6, b/444436762)
- NavigationEventInfoist jetzt ein- abstract classstatt eines- interface. Aktualisieren Sie alle benutzerdefinierten Implementierungen, damit sie von der Klasse erben (z. B.- data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)
- Die alte Property NavigationEventDispatcher.stateund die FunktiongetState<T>()wurden entfernt. Verwende die neuen, separaten Abläufedispatcher.transitionState(für den Fortschritt von Touchgesten) unddispatcher.history(für den Navigationsstapel). (Ic2ceb, b/444734264)
- Der NavigationEventInput.onInfoChanged(...)-Callback wird ersetzt. Implementieren Sie den neuenonHistoryChanged(history: NavigationEventHistory)-Callback, um Updates als einzelnesNavigationEventHistory-Objekt zu erhalten. (I23e0b, b/444734264)
- Führen Sie eine neue globale NavigationEventDispatcher.historyStateFlowein. Bei diesem nicht generischen Ablauf können Beobachter nur Änderungen am Navigationsstapel abonnieren. Außerdem bleibt er während des Fortschritts von Gesten stabil. Dies ist das Gegenstück zutransitionState. (I1db10, b/444734264)
- Führen Sie eine neue globale NavigationEventDispatcher.transitionStateStateFlowein. In diesem nicht generischen Ablauf können Beobachter nur den physischen Gestenzustand (Leerlauf/Wird ausgeführt) abonnieren, unabhängig vom Verlauf. (I171fa, b/444734264)
- Stellen Sie die Klasse NavigationEventHistoryStatevor. Sie dient als Haupt-API zum Beobachten des Navigationsverlaufs, unabhängig vom Gestenstatus. (I81ca5, b/444734264)
- NavigationEventist jetzt als- @Immutablegekennzeichnet, sodass der Compose-Compiler Recompositions optimieren kann. (If78c7, b/444734264)
- Die navigationevent-compose-Handler-APIs wurden aktualisiert.NavigationEventHandlerundNavigationBackHandler(und Varianten) unterstützen jetzt eine neue Überladung, die gehosteteNavigationEventStates akzeptiert. Die einfachen Überladungen (mitcurrentInfo) bleiben erhalten und verwenden jetzt intern dieses neue Statusmodell. (Ic3251, b/444734264)
- Fügen Sie der navigationevent-compose-Bibliothek den neuen@Stable-NavigationEventState<T>-Status-Holder hinzu. Dieses Objekt kombiniert den lokalen Verlauf mit dem lokalen Gestenstatus und ist die primäre Verbindung zwischenrememberNavigationEventStateundNavigationEventHandler. (Ifb69f, b/444734264)
- Fügen Sie NavigationEventHandlereine neue öffentliche schreibgeschütztetransitionState: TransitionState-Property hinzu. Handler haben jetzt einen eigenen Übergangsstatus, der von externen Systemen beobachtet werden kann. (I9acd2, b/444734264)
- Die neue versiegelte Klasse TransitionStatewird eingeführt. Sie dient als Kern-API zum Beobachten des Gestenzustands, unabhängig vom Navigationsverlauf. (Id4beb, b/444734264)
- Machen Sie currentInfo,backInfoundforwardInfoals öffentliche schreibgeschützte Attribute fürNavigationEventHandlerverfügbar. (Ia7636, b/444734264)
- Bei Implementierungen von NavigationEventHandlermuss jetzt eininitialInfo: T-Wert für den Basiskonstruktor angegeben werden. (Idcfea, b/444734264)
- Ersetzen Sie OnBackInvokedInputdurchOnBackInvokedOverlayInputoderOnBackInvokedDefaultInput. (I5323f, b/428948766)
- Markiere NavigationEventStateals@Immutable. Dadurch wird die Leistung von Compose verbessert, da Composables, die diesen Status beobachten, die Neuzusammensetzung korrekt überspringen können. (I399c8)
- Benennen Sie NavigationEventInfo.NotProvidedinNavigationEventInfo.None;um und aktualisieren Sie die Verweise. Keine Verhaltensänderung. (I5e2d4)
- NavigationEventInfoist jetzt als- @Immutablegekennzeichnet, sodass der Compose-Compiler Recompositions optimieren kann. (I7c112)
- Verbesserung der Java-Ergonomie durch eine benutzerfreundliche Schnittstelle für den Fallback für die Vervollständigung des Backends. (I8a860)
- Benennen Sie onHasEnabledHandlerChangedinonHasEnabledHandlersChangedum. Damit wird verdeutlicht, dass im Callback der kollektive Aktivierungsstatus aller Handler gemeldet wird, nicht nur der eines einzelnen. (I1af61, b/443711297)
- Entfernen Sie hasEnabledHandler()ausNavigationEventDispatcher;und verwenden Sie stattdessenNavigationEventInput.onHasEnabledHandlersChanged. (Idef72, b/443711297)
- Fügen Sie den onInfoChanged-Callback zuNavigationEventInputhinzu, um Listener über Änderungen am Navigationsverlauf zu benachrichtigen. Dadurch wird der vollständige Kontext der aktuellen, vorherigen und nächsten Stacks bereitgestellt, sodass Eingaben auf die Kontextinformationen reagieren können. (I69a8b, b/443282983)
- Mache NavigationEventsswipeEdgezu einem@IntDef(Icee54, b/443950342)
- Fügen Sie NavigationEventDispatcher.addInputden Parameterpriorityhinzu, um einen Dispatcher auf eine Priorität zu beschränken. Ereignisse wieonHasEnabledCallbacksChangedwerden jetzt nur ausgelöst, wenn sich Rückrufe mit dieser Priorität ändern. (I3e488, b/443711297)
- Benennen Sie den NavigationEventDispatcher-Parameter zur besseren Übersichtlichkeit vonparentDispatcherin „parent“ um. (Id4f1f, b/443801782)
- NavigationEventPriorityzugunsten von- @IntDeffür Java-Nutzer entfernen (I10a9f, b/440514265)
- Navigationshandler-Vertrag erzwingen. Wenn in Ihrem NavigationEventHandlerisBackEnabledoderisForwardEnabledauftruefestgelegt ist, müssen Sie jetztonBackCompletedbzw.onForwardCompletedüberschreiben. Die Standardimplementierungen lösen jetzt eine Ausnahme aus, um stille Fehler zu verhindern. (I17c62)
- Gültige Prioritätswerte beim Hinzufügen von Navigationsereignis-Handlern erzwingen Wenn Sie addHandlermit einer nicht unterstützten Priorität aufrufen, wird jetzt eineIllegalArgumentExceptionausgelöst. So erhalten Sie auf allen Zielplattformen sofortiges Feedback zur falschen Verwendung. (I3c474)
Fehlerkorrekturen
- Machen Sie addHandleridempotent und ignorieren Sie doppelte Registrierungen. (I052aa, b/444734264)
- NavigationEventState-Attribute während der Neuzusammenstellung synchronisieren (Ib3b4d, b/444734264)
- NavigationEventInputsmuss die aktuellen Kontextinformationen (aktuell, zurück, vorwärts) sofort nach der Registrierung erhalten. (Ie65bf, b/443282983)
Version 1.0.0-alpha08
10. September 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha08 ist veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
Neue Funktionen
- Einführung einer lambdabasierten NavigationEventHandlerAPI, die den Flow-basierten Handler ersetzt. Mit einfachen Rückrufen anstelle von Flows können Sie Vorwärts- und Rückwärtsgesten verarbeiten. So wird Boilerplate-Code reduziert und Probleme mit dem Abbrechen von Vorgängen vermieden.NavigationBackHandlerundNavigationForwardHandlerals gezielte Convenience-APIs bereitstellen. Entfernen Sie das Flow-basierteNavigationEventHandlerund migrieren Sie zu den neuen Callbacks. (I23bac, b/436248277)
- Ermögliche es passiven Zuhörern, über kombinierte Back-Informationen auf den vollständigen Navigations-Backstack zuzugreifen. Ermögliche es Benutzeroberflächen, Vorschauen und einen verschachtelten Navigationsverlauf zu rendern, anstatt auf den obersten Callback beschränkt zu sein. (I7a510, b/436248277)
- Einführung eines expliziten Modells für „Zurück“, „Aktuell“ und „Vorwärts“, um den Navigationsstatus zu verdeutlichen und die Vorwärtsnavigation mit verschachtelten Handlern zu unterstützen. (Ib86da, b/420443609)
- Fügen Sie onForward*-Methoden undisForwardEnabledzuNavigationEventCallbackhinzu. (Ic100f, b/436248290)
- Unterstützung für die Vorwärtsnavigation in NavigationEventInputhinzufügen. (I5734b)
API-Änderungen
- Aktivieren Sie das Testen von Ereignissen für die Vorwärtsnavigation mit TestNavigationEventCallback. Verwenden Sie die HooksisForwardEnabledundonForward*. (I21fb5, b/420443609)
- Benennen Sie onEvent*-Callbacks inNavEventinonBack*um. (I228b3, b/436248290)
- Konvertieren Sie SwipeEdgein eine Inline-Klasse. (Id5e01)
- Machen Sie die navigationevent-Bibliothek mit Java kompatibel. Alle öffentlichen APIs sind jetzt vollständig über Java-Code zugänglich, was eine nahtlose Integration in Projekte mit mehreren Sprachen oder nur mit Java ermöglicht. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294)
- API-Rollen werden durch Umbenennen von NavigationEventCallbackinNavigationEventHandlerverdeutlicht. Diese Änderung entspricht besser dem Zweck der Klasse, mehrstufige Navigationsgesten zu verarbeiten. Die entsprechendeaddCallback-Methode ist jetztaddHandler. (I2492a, b/443040331)
Fehlerkorrekturen
- Verhindern, dass der „Zurück“-Fallback bei der Vorwärtsnavigation ausgeführt wird. (I74814, b/436248290)
- Unterstützung für die vorausschauende Vorwärtsnavigation hinzugefügt. Die NavigationEvent-APIs verarbeiten jetzt sowohl „Zurück“- als auch „Vorwärts“-Gesten und ermöglichen so einheitliche Animationen für beide Navigationsrichtungen. (Idc98c, b/436248290)
- Verhindert einen IllegalStateException-Absturz während der Neuzusammenstellung, wenn ein untergeordnetes ElementNavigationEventDispatcherOwnerentfernt wird. (Iff50c, b/412629020)
- Passive Listener können jetzt über kombinierte Back-Informationen auf den gesamten Navigations-Backstack zugreifen. So können Benutzeroberflächen Vorschauen und einen verschachtelten Navigationsverlauf rendern, anstatt auf den obersten Callback beschränkt zu sein. (I7a510, b/436248277)
Version 1.0.0-alpha07
27. August 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha07 ist veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
API-Änderungen
- NavigationEventDispatcher.onHasEnabledCallbacksChangedentfernen (I50e97)
- Mache NavigationEventCallback.onEventCompleted()abstrakt. (I36b38)
- Ändern Sie die NavigationEventCallback#on*-Methoden inprotected. Aktualisieren Sie den Ländercode, um sie zu überschreiben. (I6b691)
- Benennen Sie DirectNavigationEventInput-Funktionen um. (Iffb62)
- Benennen Sie NavigationEventInput.onAttachinonAddedum. (I2d0b8)
- Benennen Sie NavigationEventInput.onDetachinonRemovedum. (I2d0b8)
- Benennen Sie NavigationEventInputHandlerinNavigationEventInputum. (I676a4)
- Fügen Sie @EmptySuperzuNavigationEventInput.onHasEnabledCallbacksChangedhinzu. (If9853)
- Implementieren Sie onAttachinNavigationEventInputHandler. (I03648)
- Implementieren Sie onDetachinNavigationEventInputHandler. (I03648)
- Standardmäßig ist NavigationEventCallbackbei der Erstellung aktiviert. (Ic0188)
- Ersetzen Sie NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackdurchNavigationEventInput.onHasEnabledCallbacksChanged. (I64e93)
- Hauptthread für NavigationEventDispatcher.addInputerforderlich. (Ic2930)
- Hauptthread für NavigationEventDispatcher.removeInputerforderlich. (Ic2930)
- Dispatcher.addOnHasEnabledCallbacksChangedCallbackentfernen Ersetzen Sie den Text durch- Dispatcher.onHasEnabledCallbacksChanged. (Ida3e3, b/436530096)
Fehlerkorrekturen
- Es wurde ein Fehler behoben, durch den das Hinzufügen eines bereits angehängten oder das Entfernen eines nicht angehängten Handlers eine falsche Lebenszykluslogik ausgelöst hat. (I9e47b)
Version 1.0.0-alpha06
13. August 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha06 ist veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
Neue Funktionen
Passive Listeners API
Sie können jetzt benutzerdefinierte Kontextinformationen von einem beliebigen Navigationshost übergeben und passiv auf Änderungen des Gestenstatus an einer beliebigen Stelle in der Benutzeroberfläche warten. So werden kontextbezogene Animationen für die intelligente „Zurück“-Touchgeste und andere gestengesteuerte Navigationsfunktionen ermöglicht.
Diese Funktion besteht aus zwei Teilen:
- Informationen bereitstellen: Verwenden Sie NavigationEventInfo, um benutzerdefinierte Daten zu übertragen.
- Consuming State: Verwenden Sie dispatcher.state(NavigationEventState), um den Fortschritt und Kontext der Geste zu beobachten.
- NavigationEventCallbackbietet jetzt die Methode- setInfo(currentInfo, previousInfo), um den Kontext für Gesten in einem Aufruf festzulegen (I1d5e7, b/424470518).
- Mit NavigationEventHandlerwird eine neue Überladung hinzugefügt, diecurrentInfoundpreviousInfoakzeptiert. Damit ist sie die primäre API zum Bereitstellen von Kontext in Compose-Apps (I6ecd3, b/424470518).
Beispiel:
  data class MyScreenInfo(val screenName: String) : NavigationEventInfo
  NavigationEventHandler(
      enabled = true,
      currentInfo = MyScreenInfo("Details Screen"),
      previousInfo = MyScreenInfo("Home Screen")
  ) { /* Handle back completion */ }
- NavigationEventDispatchermacht jetzt- dispatcher.stateund- dispatcher.getState<T>()verfügbar (If7fae, Ia90ca, b/424470518). Mit diesen- StateFlow-basierten APIs kann jede Benutzeroberfläche den Fortschritt von Gesten und Kontextdaten beobachten, ohne das Ereignis direkt zu verarbeiten.
Beispiel:
  val gestureState by LocalNavigationEventDispatcherOwner.current!!
      .navigationEventDispatcher
      .state
      .collectAsState()
  val progress = gestureState.progress // Returns latestEvent.progress or 0F
  when (val state = gestureState) {
      is InProgress -> {
          val toScreen = state.currentInfo as MyScreenInfo
          val fromScreen = state.previousInfo as MyScreenInfo
          println("Navigating from ${fromScreen.screenName} to ${toScreen.screenName}")
      }
      is Idle -> { /* Idle state */ }
  }
- Fügen Sie das Attribut - progresszu- NavigationEventState(I7b196) hinzu, das bei laufender Aktion- latestEvent.progressund ansonsten- 0Fzurückgibt:- val progress = state.progress
- Fügen Sie die zusammensetzbare Funktion - NavigationEventDispatcherOwnerhinzu, um- NavigationEventDispatcher-Instanzen hierarchisch zu erstellen, zu verknüpfen und zu verwerfen. Aktivieren Sie die dynamische Steuerung des aktivierten Status des Dispatchers und die automatische Bereinigung.- @Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
API-Änderungen
- Der Parameter isPassthroughwurde aus derNavigationEventCallbackentfernt. (I99028, b/424470518)
- NavigationEventState-Konstruktoren sind jetzt intern. Aktualisieren Sie für Tests den Status (Standardwert ist- Idle) über die- DirectNavigationEventInputHandler. Rufen Sie- handleOnStartedoder- handleOnProgressedauf, um den Status auf- InProgressfestzulegen, und- handleOnCompletedoder- handleOnCancelled, um ihn auf- Idlezurückzusetzen. Verwenden Sie- NavigationEventCallback.setInfo, um- NavigationEventInfozu aktualisieren. (I93dca, b/424470518)
- NavigationEventwurden Standardparameter hinzugefügt, um die Instanziierung zu vereinfachen und Tests zu vereinfachen, die anstelle von- TestNavigationEventverwendet werden sollten. (I5dc49, I232f4)
- Es wurde ein TestNavigationEventCallbackzum Testen von Navigationsereignissen mit bestimmten aktuellen/vorherigen Status hinzugefügt. (Idd22e, b/424470518)
- NavigationEventInputHandlerwurde in eine abstrakte Klasse umgewandelt, um die vorherige- AbstractNavigationEventInputHandlerdurch eine Implementierung in- DirectNavigationEventInputHandlerzu ersetzen (Iadde5, Ifed40I3897c, b/432616296, b/435416924).
- Die Präfixe der send*-Funktionen inNavigationEventInputHandlerwurden inhandle*umbenannt. (Iffcaf)
- OnBackInvokedInputHandlerwird jetzt auf die neu- abstract- NavigationInputHandlererweitert. (Ib45aa)
- NavigationEventDispatcherOwnerwurde so geändert, dass ein übergeordneter Dispatcher erforderlich ist. Sie müssen- nullexplizit übergeben, um einen Root-Dispatcher zu erstellen. (Ia6f64, b/431534103)
Fehlerkorrekturen
- Verbesserte Effizienz durch Vermeidung von Sammlungskopien in NavigationEventDispatcher.dispose(). (I4ab09)
- Ein Problem wurde behoben, bei dem NavigationEventHandlernicht richtig auf Änderungen des Aktivierungsstatus reagierte. (Ia5268,I19bec, I5be5c, b/431534103)
Docs-Updates
- Die KDocs für NavigationEventwurden erweitert, um die Rolle als einheitlicher Ereignis-Wrapper und das Verhalten von Detail-Properties bei verschiedenen Navigationstypen (Gesten, Klicks) zu verdeutlichen. (I91e8d)
- Die Dokumentation für die Compose-APIs für die Verarbeitung von Systemrückgaben (BackHandler,PredictiveBackHandler,NavigationEventHandler) wurde aktualisiert, um das Verhalten speziell in Bezug auf die Reihenfolge der Rückrufe zu beschreiben. (I7ab94, )
Abhängigkeitsupdate
- NavigationEventhängt jetzt von Compose Runtime 1.9.0-beta03 ab, wodurch das- navigationevent-compose-Artefakt alle KMP-Ziele unterstützt. (Ia1b87)
Version 1.0.0-alpha05
30. Juli 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha05 ist veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
Unterstützung von Über- und Unterordnern:
Ein NavigationEventDispatcher kann jetzt übergeordnete und untergeordnete Dispatcher haben, wodurch eine hierarchische Baumstruktur entsteht. So können Navigationsereignisse flexibler über komplexe Compose-UI-Komponenten hinweg weitergegeben und verwaltet werden, indem die strukturelle Hierarchie der Benutzeroberfläche durch verkettete Dispatcher abgebildet wird. (I194ac)
  // Create a parent dispatcher that will manage navigation events at a higher level.
  val parentDispatcher = NavigationEventDispatcher()
  // Create a child dispatcher linked to the parent, forming a hierarchy.
  val childDispatcher = NavigationEventDispatcher(parentDispatcher)
Mit dem hierarchischen Attribut isEnabled lässt sich ein Dispatcher von oben nach unten steuern. Wenn isEnabled für einen Dispatcher auf false gesetzt ist, werden alle untergeordneten Dispatcher automatisch deaktiviert. Mit dieser Funktion lassen sich ganze Zweige des Navigationsereignissystems effizient deaktivieren. (I9e985)
  // Disabling the child dispatcher disables all its callbacks and any of its children recursively.
  childDispatcher.isEnabled = false
Außerdem wird bei der isEnabled-Property für NavigationEventCallback jetzt der aktivierte Status des zugehörigen Dispatchers berücksichtigt. Das bedeutet, dass ein Callback nur dann als aktiviert gilt, wenn sowohl der Callback selbst als auch sein Dispatcher (einschließlich seiner übergeordneten Elemente) aktiviert sind. So wird eine konsistente hierarchische Steuerung der Callback-Aktivierung gewährleistet. (I1799a)
  // Create a test callback and add it to the child dispatcher.
  val callback1 = TestNavigationEventCallback(isEnabled = true)
  childDispatcher.addCallback(callback1)
  // Since the childDispatcher is disabled, the callback is effectively disabled as well.
  assertThat(callback1.isEnabled).isFalse()
Es wurde eine neue dispose()-Methode eingeführt, um Dispatcher und ihre untergeordneten Elemente richtig zu bereinigen. Durch Aufrufen von dispose() werden Listener beendet, um Speicherlecks zu verhindern. Außerdem werden alle untergeordneten Dispatcher rekursiv verworfen, alle für den Dispatcher registrierten Callbacks entfernt und die Verknüpfung mit dem übergeordneten Element aufgehoben. So wird sichergestellt, dass Ressourcen korrekt freigegeben werden, wenn Dispatcher nicht mehr benötigt werden. (I9e985)
  // Dispose the child dispatcher to clean up resources.
  childDispatcher.dispose()
Wenn eine öffentliche Methode für einen verworfenen Dispatcher aufgerufen wird, wird sofort eine IllegalStateException ausgelöst. So werden stille Fehler verhindert und Entwickler können eine unsachgemäße Verwendung während der Entwicklung erkennen. (Ic2dc3)
  val callback2 = TestNavigationEventCallback()
  // Attempting to use a disposed dispatcher will throw an exception.
  assertThrows<IllegalStateException> {
      childDispatcher.addCallback(callback2)
  }
Hinweis:Wir führen in aosp/3692572 eine neue NavigationEventDispatcherOwner-Composable ein, die automatisch einen untergeordneten Dispatcher in Compose UI verwaltet. Diese Änderung wurde jedoch nicht in den aktuellen Release aufgenommen und ist für den nächsten geplant.
Navigation Testing Library
- Fügen Sie das navigationevent-testing-Modul hinzu, um spezielle Testdienstprogramme für dienavigationevent-Bibliothek bereitzustellen. (0e50b6)
- Fügen Sie TestNavigationEventCallbackals gefälschte Utility-Klasse zum Testen hinzu. Es werden Aufrufe von Callback-Methoden aufgezeichnet und empfangeneNavigationEvent-Elemente zur Unterstützung der Bestätigung gespeichert. (4a0246)
- Fügen Sie die TestNavigationEvent-Fake-Hilfsfunktion hinzu, umNavigationEvent-Instanzen mit Standardwerten zu erstellen. Dadurch werden Unittests für die Verarbeitung von Navigationsereignissen vereinfacht. (3b63f5)
- Fügen Sie TestNavigationEventDispatcherOwnerals gefälschte Utility-Klasse zum Testen hinzu. Es werden Fallback- und „enabled-state-changed“-Ereignisanzahlen erfasst, um die Interaktionsüberprüfung in Tests zu unterstützen. (c8753e)
API-Änderungen
- Verschieben Sie NavigationEventInputHandlervonandroidMainnachcommonMain, damit es im gemeinsamen KMP-Code verfügbar ist. Neuepublic send*-Methoden zum Senden von Ereignissen hinzufügen Ändern Sie die Dispatch-Funktionen inNavigationEventDispatchervonpubliczuinternal. Nutzer müssen jetztNavigationEventInputHandlerverwenden, um Ereignisse zu senden. (Ia7114)
- Benennen Sie NavigationInputHandlerinOnBackInvokedInputHandlerum. (I63405)
Fehlerkorrekturen
- Refaktorieren Sie NavigationEventDispatcher, um den Mehraufwand zu reduzieren, indem Sie die Zuweisung von Zwischenlisten vermeiden und die Leistung der Callback-Weiterleitung verbessern. (I82702, I1a9d9)
- Fügen Sie @FloatRange-Annotationen zu den FelderntouchX,touchYundprogressinNavigationEventhinzu, um gültige Wertebereiche zur Kompilierzeit zu erzwingen und die API-Sicherheit zu verbessern. (Iac0ec)
Version 1.0.0-alpha04
2. Juli 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha04 ist veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
Fehlerkorrekturen
- implementedInJetBrainsForkwurde für- navigationevent-composeverwendet und ein- commonStubs-Ziel wurde hinzugefügt, um den Compose-Konventionen zu entsprechen. Die Änderung wurde von JetBrains angefordert. (f60c79)
- Die Anwendung des Compose-Compiler-Plug-ins für Kotlin/Native wurde korrigiert, um die korrekte Stub-Generierung zu gewährleisten. Es gibt keine Auswirkungen auf öffentliche APIs oder das Verhalten. (1890c9)
Version 1.0.0-alpha03
18. Juni 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03 ist veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurde ein neues navigationevent-compose-Modul eingeführt, um Jetpack Compose-Funktionen in dernavigationevent-Bibliothek zu unterstützen. (980d78)
- NavigationEventCompose hat eine neue lokale Komposition- LocalNavigationEventDispatcherOwnerhinzugefügt. Es wird ein Nullable-Wert zurückgegeben, um besser feststellen zu können, ob er in der aktuellen Komposition verfügbar ist.- NavigationEventHandlergibt jetzt einen Fehler aus, wenn der zugrunde liegende Eigentümer nicht gefunden wird. (62ffda)
- NavigationEventCompose hat ein neues- NavigationEventHandler-Composable hinzugefügt, um Ereignisse für die Vorhersage der Zurück-Geste zu verarbeiten. Sie enthält ein- Flowvon- NavigationEvent-Objekten, die in der von Ihnen bereitgestellten Lambda-Funktion für die Sperrung c42ba6 erfasst werden müssen:
NavigationEventHandler { progress: Flow<NavigationEvent> ->
  // This block is executed when the back gesture begins.
  try {
    progress.collect { backEvent ->
      // Handle gesture progress updates here.
    }
    // This block is executed if the gesture completes successfully.
  } catch (e: CancellationException) {
    // This block is executed if the gesture is cancelled
    throw e
  } finally {
    // This block is executed either the gesture is completed or cancelled
  }
}
API-Änderungen
- Jeder NavigationEventCallbackkann jetzt nur bei einemNavigationEventDispatchergleichzeitig registriert werden. Wenn er mehreren Dispatchern hinzugefügt wird, wird einIllegalStateExceptionausgegeben. Dieses Verhalten unterscheidet sich vonOnBackPressedDispatcher, das mehrere Dispatcher zulässt. (e82c19)
- isPassThroughwurde zu einem- valgemacht, um Mutationen während der Navigation zu verhindern, die die Weiterleitung von- NavigationEventunterbrechen könnten. (I0b287)
Version 1.0.0-alpha02
4. Juni 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha02 ist veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
- Ersetzen Sie den sekundären Konstruktor von NavigationEventDispatcherdurch Standardargumente. (I716a0)
- Entfernen Sie die Prioritätseigenschaft aus NavigationEventCallback. Übergeben Sie die Priorität stattdessen anNavigationEventDispatcher.addCallback(). (I13cae)
Fehlerkorrekturen
- Ein ConcurrentModificationExceptionwurde behoben, das auftreten konnte, wennNavigationEventCallback.remove()aufgerufen wurde, weil die interne Liste der Closeables gleichzeitig geändert wurde. (b/420919815)
Version 1.0.0-alpha01
20. Mai 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha01 ist veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Neue Funktionen
- Die androidx.navigationevent-Bibliothek bietet eine KMP-First-API für die Verarbeitung von System-Back sowie Predictive Back. DieNavigationEventDispatcherdient als gemeinsame API zum Registrieren einer oder mehrererNavigationEventCallback-Instanzen für den Empfang von System-Back-Ereignissen.
- Diese Ebene liegt unter den zuvor veröffentlichten APIs in androidx.activityund soll ein weniger meinungsbezogener Ersatz für die Verwendung der Activity APIs in Komponenten höherer Ebene oder die direkte Verwendung derOnBackInvokedDispatcherAPIs des Android-Frameworks sein. Dieandroidx.activityAPIs wurden im Rahmen von Activity 1.12.0-alpha01 auf Basis der Navigation Event APIs neu geschrieben.
