navigationevent
| 最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース | 
|---|---|---|---|---|
| 2025 年 10 月 8 日 | - | - | 1.0.0-beta01 | - | 
依存関係の宣言
navigationevent への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-beta01") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
このアーティファクトのリリースノートはありません。
バージョン 1.0
バージョン 1.0.0-beta01
2025 年 10 月 8 日
androidx.navigationevent:navigationevent-*:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 にはこれらの commit が含まれています。
API の変更
- NavigationEvent.touchXと- NavigationEvent.touchYの- FloatRangeアノテーションを修正しました。これらの値は絶対ピクセル座標を表し、- 1.0の上限はありません。(I4b205、b/445989313)
- NavigationEventDispatcherOwnerコンポーザブルを- rememberNavigationEventDispatcherOwnerにリファクタリングします。この関数は- NavigationEventDispatcherOwnerを直接返すようになりました。このオーナーをサブ コンポジションに提供するには、- CompositionLocalProviderを使用します。(I874b2、b/444446629)
バージョン 1.0.0-alpha09
2025 年 9 月 24 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha09 がリリースされました。バージョン 1.0.0-alpha09 には、これらの commit が含まれています。
API の変更
- Idle()をインスタンス化する代わりに、- NavigationEventTransitionState.Idleシングルトン オブジェクトを直接使用します。(Ic7d9e、b/444734264)
- 便宜的なコンストラクタを内部化し、直接構築するのではなく、パブリック NavigationEventDispatcher.historyを介してインスタンスを取得します。(I3b7e0、b/444734264)
- rememberNavigationEventState経由で- NavigationEventStateを作成する必要があります。コンストラクタが internal になりました。(Ie143c、b/444734264)
- onBackCompletedFallbackを採用し、- fallbackOnBackPressedの使用法とコンストラクタ パラメータを置き換えます。動作は変更されていません。完了した未処理の戻るイベントでのみ呼び出されます。(Idabe9、b/444734264)
- NavigationEventHistory(mergedHistory, currentIndex)のプライマリ コンストラクタが- internalになりました。外部コンシューマーは、パブリック コンストラクタ(空のコンストラクタまたはパーティション ベースのコンストラクタ)を使用してインスタンスを作成する必要があります。(I1c047、b/444734264)
- View.setViewTreeNavigationEventDispatcherOwnerで null 許容のオーナーを受け入れるようにしました(Ic9eb6、b/444436762)
- NavigationEventInfoは- interfaceではなく- abstract classになりました。すべてのカスタム実装を更新して、クラス(- data class MyInfo : NavigationEventInfo()など)から継承します。(I1e59c、b/444734264)
- 以前の NavigationEventDispatcher.stateプロパティとgetState<T>()関数が削除されました。新しい個別のdispatcher.transitionState(ジェスチャーの進行状況用)フローとdispatcher.history(ナビゲーション スタック用)フローを使用します。(Ic2ceb、b/444734264)
- NavigationEventInput.onInfoChanged(...)コールバックが置き換えられます。新しい- onHistoryChanged(history: NavigationEventHistory)コールバックを実装して、更新を単一の- NavigationEventHistoryオブジェクトとして受け取ります。(I23e0b、b/444734264)
- 新しいグローバル NavigationEventDispatcher.historyStateFlowを導入します。この非汎用フローにより、オブザーバーはナビゲーション スタックの変更のみをサブスクライブでき、ジェスチャーの進行中も安定した状態を維持できます。これはtransitionStateのカウンターパートです。(I1db10、b/444734264)
- 新しいグローバル NavigationEventDispatcher.transitionStateStateFlowを導入します。この非汎用フローにより、オブザーバーは履歴とは別に、物理ジェスチャーの状態(Idle/InProgress)のみをサブスクライブできます。(I171fa、b/444734264)
- NavigationEventHistoryStateクラスを紹介します。これは、ジェスチャーの状態とは別に、ナビゲーション情報の履歴を観察するためのコア API として機能します。(I81ca5、b/444734264)
- NavigationEventが- @Immutableとしてマークされるようになり、Compose Compiler で再コンポーズを最適化できるようになりました。(If78c7、b/444734264)
- navigationevent-composeハンドラ API が更新されました。- NavigationEventHandlerと- NavigationBackHandler(およびバリアント)が、ホイストされた- NavigationEventStateを受け取る新しいオーバーロードをサポートするようになりました。シンプルなオーバーロード(- currentInfoを受け取る)は保持され、内部でこの新しい状態モデルを使用するようになりました。(Ic3251、b/444734264)
- 新しい @StableNavigationEventState<T>状態ホルダーをnavigationevent-composeライブラリに追加します。このオブジェクトはローカル履歴とローカル ジェスチャーの状態を組み合わせたもので、rememberNavigationEventStateとNavigationEventHandlerの間の主なリンクとなります。(Ifb69f、b/444734264)
- NavigationEventHandlerに新しい公開読み取り専用の- transitionState: TransitionStateプロパティを追加します。ハンドラは独自の遷移状態を維持するようになり、外部システムがそれを監視できるようになりました。(I9acd2、b/444734264)
- 新しい TransitionState密封クラスを導入します。これは、ナビゲーション履歴とは別に、ジェスチャーの状態を監視するためのコア API として機能します。(Id4beb、b/444734264)
- currentInfo、- backInfo、- forwardInfoを- NavigationEventHandlerの公開読み取り専用プロパティとして公開します。(Ia7636、b/444734264)
- NavigationEventHandlerの実装では、ベース コンストラクタに- initialInfo: T値を指定する必要があります。(Idcfea、b/444734264)
- OnBackInvokedInputは、- OnBackInvokedOverlayInputまたは- OnBackInvokedDefaultInputに置き換えます。(I5323f、b/428948766)
- NavigationEventStateを- @Immutableとしてマークします。これにより、この状態を監視するコンポーザブルが再コンポーズを正しくスキップできるようになり、Compose のパフォーマンスが向上します。(I399c8)
- NavigationEventInfo.NotProvidedの名前を- NavigationEventInfo.None;に変更し、参照を更新します。動作の変更はありません。(I5e2d4)
- NavigationEventInfoが- @Immutableとしてマークされるようになり、Compose Compiler で再コンポーズを最適化できるようになりました。(I7c112)
- 戻る操作の完了フォールバック用の楽しいインターフェースで Java のエルゴノミクスを改善。(I8a860)
- onHasEnabledHandlerChangedを- onHasEnabledHandlersChangedに変更しました。これにより、コールバックは 1 つのハンドラだけでなく、すべてのハンドラの有効状態をまとめてレポートすることが明確になります。(I1af61、b/443711297)
- NavigationEventDispatcher;から- hasEnabledHandler()を削除し、代わりに- NavigationEventInput.onHasEnabledHandlersChangedを使用します。(Idef72、b/443711297)
- NavigationEventInputに- onInfoChangedコールバックを追加して、ナビゲーション履歴の変更をリスナーに通知します。これにより、現在、戻る、進むのスタックの完全なコンテキストが提供され、入力がコンテキスト情報に反応できるようになります。(I69a8b、b/443282983)
- NavigationEventの- swipeEdgeを- @IntDefにする(Icee54、b/443950342)
- NavigationEventDispatcher.addInputに- priorityパラメータを追加して、ディスパッチャを 1 つの優先度にスコープします。これにより、- onHasEnabledCallbacksChangedなどのイベントは、その優先度のコールバックが変更された場合にのみ発生するようになります。(I3e488、b/443711297)
- わかりやすくするため、NavigationEventDispatcherパラメータの名前をparentDispatcherから parent に変更しました。(Id4f1f、b/443801782)
- Java ユーザー向けに NavigationEventPriorityを削除し、@IntDefを追加しました(I10a9f、b/440514265)
- ナビゲーション ハンドラ契約を適用します。NavigationEventHandlerでisBackEnabledまたはisForwardEnabledをtrueに設定している場合は、それぞれonBackCompletedまたはonForwardCompletedをオーバーライドする必要があります。デフォルトの実装で例外がスローされるようになり、サイレント障害を防ぐことができます。(I17c62)
- ナビゲーション イベント ハンドラを追加する際に、有効な優先度の値を強制します。サポートされていない優先度で addHandlerを呼び出すと、IllegalArgumentExceptionがスローされるようになり、すべてのターゲット プラットフォームで誤った使用方法に対するフィードバックがすぐに得られるようになりました。(I3c474)
バグの修正
- addHandlerをべき等にします。重複する登録は無視します。(I052aa、b/444734264)
- 再コンポーズ中に NavigationEventStateプロパティの同期を維持します。(Ib3b4d、b/444734264)
- NavigationEventInputsが登録直後に現在のコンテキスト情報(現在、戻る、進む)を受け取るようにします。(Ie65bf、b/443282983)
バージョン 1.0.0-alpha08
2025 年 9 月 10 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha08 がリリースされました。バージョン 1.0.0-alpha08 にはこれらの commit が含まれています。
新機能
- Flow ベースのハンドラを置き換えるラムダベースの NavigationEventHandlerAPI を導入します。フローを収集する代わりにシンプルなコールバックで戻るジェスチャーと進むジェスチャーを処理し、ボイラープレートを減らしてキャンセルに関する問題を回避します。NavigationBackHandlerとNavigationForwardHandlerを対象のコンビニエンス API として提供します。Flow ベースのNavigationEventHandlerを削除し、新しいコールバックに移行します。(I23bac、b/436248277)
- バック情報が結合されることで、パッシブ リスナーがナビゲーション バックスタック全体にアクセスできるようになります。UI は、最上位のコールバックに限定されることなく、プレビューとネストされたナビゲーション履歴をレンダリングできます。(I7a510、b/436248277)
- 明示的な戻る/現在/進むモデルを導入して、ナビゲーションの状態を明確にし、ネストされたハンドラによる進むナビゲーションをサポートします。(Ib86da、b/420443609)
- onForward*メソッドと- isForwardEnabledを- NavigationEventCallbackに追加します。(Ic100f、b/436248290)
- NavigationEventInputに進むナビゲーションのサポートを追加します。(I5734b)
API の変更
- TestNavigationEventCallbackを使用して、前方ナビゲーション イベントのテストを有効にします。- isForwardEnabledフックと- onForward*フックを使用します。(I21fb5、b/420443609)
- NavEventで- onEvent*コールバックの名前を- onBack*に変更します。(I228b3、b/436248290)
- SwipeEdgeをインライン クラスに変換します。(Id5e01)
- navigationeventライブラリを Java と相互運用できるようにします。すべての公開 API に Java コードから完全にアクセスできるようになり、混合言語プロジェクトや Java 専用プロジェクトにシームレスに統合できるようになりました。(Ibc944、I5465f、I9fb1e、b/440532890、b/443040294)
- NavigationEventCallbackの名前を- NavigationEventHandlerに変更して、API ロールを明確にします。この変更により、マルチステージ ナビゲーション ジェスチャーを処理するというクラスの目的がより明確になります。対応する- addCallbackメソッドは- addHandlerになりました。(I2492a、b/443040331)
バグの修正
- フォワード ナビゲーションでバック フォールバックが実行されないようにします。(I74814、b/436248290)
- 予測型「進む」ナビゲーションのサポートを追加しました。NavigationEventAPI が「戻る」ジェスチャーと「進む」ジェスチャーの両方を処理するようになり、両方のナビゲーション方向で一貫したアニメーションが可能になりました。(Idc98c、b/436248290)
- 子 NavigationEventDispatcherOwnerが削除されたときに再コンポーズ中にIllegalStateExceptionがクラッシュするのを防ぎます。(Iff50c、b/412629020)
- パッシブ リスナーは、結合されたバック情報を通じて完全なナビゲーション バックスタックにアクセスできるようになりました。これにより、UI は最上位のコールバックに限定されることなく、プレビューとネストされたナビゲーション履歴をレンダリングできます。(I7a510、b/436248277)
バージョン 1.0.0-alpha07
2025 年 8 月 27 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha07 がリリースされました。バージョン 1.0.0-alpha07 にはこれらの commit が含まれています。
API の変更
- NavigationEventDispatcher.onHasEnabledCallbacksChangedを削除しました。(I50e97)
- NavigationEventCallback.onEventCompleted()を抽象化しました。(I36b38)
- NavigationEventCallback#on*メソッドを- protectedに変更します。呼び出しコードを更新して、それらをオーバーライドします。(I6b691)
- DirectNavigationEventInput関数の名前を変更しました。(Iffb62)
- NavigationEventInput.onAttachを- onAddedに変更しました。(I2d0b8)
- NavigationEventInput.onDetachを- onRemovedに変更しました。(I2d0b8)
- NavigationEventInputHandlerを- NavigationEventInputに変更しました。(I676a4)
- NavigationEventInput.onHasEnabledCallbacksChangedに- @EmptySuperを追加しました。(If9853)
- NavigationEventInputHandlerに- onAttachを実装します。(I03648)
- NavigationEventInputHandlerに- onDetachを実装します。(I03648)
- 作成時にデフォルトの NavigationEventCallbackを有効にします。(Ic0188)
- NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackを- NavigationEventInput.onHasEnabledCallbacksChangedに置き換えました。(I64e93)
- NavigationEventDispatcher.addInputにメインスレッドを要求します。(Ic2930)
- NavigationEventDispatcher.removeInputにメインスレッドを要求します。(Ic2930)
- Dispatcher.addOnHasEnabledCallbacksChangedCallbackを削除しました。これは- Dispatcher.onHasEnabledCallbacksChangedに置き換えられます。(Ida3e3、b/436530096)
バグの修正
- すでにアタッチされているハンドラを追加したり、アタッチされていないハンドラを削除したりすると、ライフサイクル ロジックが正しくトリガーされないバグを修正しました。(I9e47b)
バージョン 1.0.0-alpha06
2025 年 8 月 13 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha06 がリリースされました。バージョン 1.0.0-alpha06 にはこれらの commit が含まれています。
新機能
Passive Listeners API
ナビゲーション ホストからカスタム コンテキスト情報を渡したり、UI の任意の場所からジェスチャーの状態変化を受動的にリッスンしたりできるようになりました。これにより、予測型「戻る」やその他のジェスチャー駆動型ナビゲーションでコンテキスト認識型アニメーションが有効になります。
この機能は 2 つの部分で構成されています。
- 情報の提供 - NavigationEventInfoを使用してカスタムデータを渡します。
- Consuming State - dispatcher.state(NavigationEventState)を使用して、ジェスチャーの進行状況とコンテキストを観察します。
- NavigationEventCallbackが、1 回の呼び出しでジェスチャー コンテキストを設定する- setInfo(currentInfo, previousInfo)メソッドを公開するようになりました(I1d5e7、b/424470518)。
- NavigationEventHandlerに- currentInfoと- previousInfoを受け入れる新しいオーバーロードが追加され、Compose アプリでコンテキストを提供するためのプライマリ API になりました(I6ecd3、b/424470518)。
例:
  data class MyScreenInfo(val screenName: String) : NavigationEventInfo
  NavigationEventHandler(
      enabled = true,
      currentInfo = MyScreenInfo("Details Screen"),
      previousInfo = MyScreenInfo("Home Screen")
  ) { /* Handle back completion */ }
- NavigationEventDispatcherが- dispatcher.stateと- dispatcher.getState<T>()を公開するようになりました(If7fae、Ia90ca、b/424470518)。これらの- StateFlowベースの API を使用すると、UI はイベントを直接処理することなく、ジェスチャーの進行状況とコンテキスト データを監視できます。
例:
  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 */ }
  }
- NavigationEventStateに- progressプロパティを追加します(I7b196)。進行中の場合は- latestEvent.progressを返し、それ以外の場合は- 0Fを返します。- val progress = state.progress
- NavigationEventDispatcherOwnerコンポーザブルを追加して、- NavigationEventDispatcherインスタンスを階層的に作成、リンク、破棄します。ディスパッチャーの有効状態の動的制御と自動クリーンアップを有効にします。- @Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
API の変更
- isPassthroughパラメータが- NavigationEventCallbackから削除されました。(I99028、b/424470518)
- NavigationEventStateコンストラクタが internal になりました。テストでは、- DirectNavigationEventInputHandlerを介して状態(デフォルトは- Idle)を更新します。- handleOnStartedまたは- handleOnProgressedを呼び出して状態を- InProgressに設定し、- handleOnCompletedまたは- handleOnCancelledを呼び出して- Idleに戻します。- NavigationEventInfoを更新するには、- NavigationEventCallback.setInfoを使用します。(I93dca、b/424470518)
- NavigationEventにデフォルト パラメータを追加して、インスタンス化を容易にし、テストを簡素化しました。これは- TestNavigationEventの代わりに使用する必要があります。(I5dc49、 I232f4)
- 特定の現在/以前の状態のナビゲーション イベントをテストするための TestNavigationEventCallbackを追加しました。(Idd22e、b/424470518)
- NavigationEventInputHandlerが抽象クラスになり、以前の- AbstractNavigationEventInputHandlerが- DirectNavigationEventInputHandlerの実装に置き換えられました(Iadde5、Ifed40I3897c、b/432616296、b/435416924)
- NavigationEventInputHandlerの- send*関数の接頭辞の名前が- handle*に変更されました。(Iffcaf)
- OnBackInvokedInputHandlerが新たに- abstract- NavigationInputHandlerを拡張するようになりました。(Ib45aa)
- NavigationEventDispatcherOwnerを変更し、親ディスパッチャーを必須にしました。ルート ディスパッチャーを作成するには、- nullを明示的に渡す必要があります。(Ia6f64、b/431534103)
バグの修正
- NavigationEventDispatcher.dispose()でコレクションのコピーを回避することで効率を改善しました。(I4ab09)
- NavigationEventHandlerが有効状態の変更に正しく応答しない問題を修正しました。(Ia5268、I19bec、I5be5c、b/431534103)
ドキュメントの更新
- NavigationEventの KDoc を拡張し、統合イベント ラッパーとしての役割と、さまざまなナビゲーション タイプ(ジェスチャー、クリック)での詳細プロパティの動作を明確にしました。(I91e8d)
- コールバックの順序に関する動作を明確にするため、Compose API(BackHandler、PredictiveBackHandler、NavigationEventHandler)のシステム バック処理に関するドキュメントを更新しました。(I7ab94、)
依存関係の更新
- NavigationEventが Compose Runtime 1.9.0-beta03 に依存するようになり、- navigationevent-composeアーティファクトがすべての KMP ターゲットをサポートできるようになりました。(Ia1b87)
バージョン 1.0.0-alpha05
2025 年 7 月 30 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 には、これらの commit が含まれています。
親子階層のサポート:
NavigationEventDispatcher に親ディスパッチャーと子ディスパッチャーを設定して、階層ツリー構造を形成できるようになりました。これにより、UI の構造階層をチェーンされたディスパッチャーで反映することで、複雑な Compose UI コンポーネント間でナビゲーション イベントをより柔軟に伝播して管理できるようになります。(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)
階層型 isEnabled プロパティを使用すると、ディスパッチャをトップダウンで制御できます。ディスパッチャで isEnabled が false に設定されている場合、そのすべての子孫ディスパッチャが自動的に無効になります。この機能により、ナビゲーション イベント システムのブランチ全体を効率的にオフにできます。(I9e985)
  // Disabling the child dispatcher disables all its callbacks and any of its children recursively.
  childDispatcher.isEnabled = false
また、NavigationEventCallback の isEnabled プロパティは、関連付けられたディスパッチャーの有効状態を尊重するようになりました。つまり、コールバック自体とそのディスパッチャー(その祖先を含む)の両方が有効になっている場合にのみ、コールバックが有効と見なされます。これにより、コールバックの有効化に対する階層的な制御の一貫性が確保されます。(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()
ディスパッチャーとその子を適切にクリーンアップするための新しい dispose() メソッドが導入されました。dispose() を呼び出すと、メモリリークを防ぐためにリスナーが停止し、すべての子ディスパッチャーが再帰的に破棄され、ディスパッチャーに登録されているすべてのコールバックが削除され、親とのリンクが解除されます。これにより、ディスパッチャーが不要になったときにリソースが正しく解放されることが保証されます。(I9e985)
  // Dispose the child dispatcher to clean up resources.
  childDispatcher.dispose()
破棄されたディスパッチャーでパブリック メソッドが呼び出されると、IllegalStateException がすぐにスローされます。これにより、サイレント障害を防ぎ、開発中に不適切な使用を特定できます。(Ic2dc3)
  val callback2 = TestNavigationEventCallback()
  // Attempting to use a disposed dispatcher will throw an exception.
  assertThrows<IllegalStateException> {
      childDispatcher.addCallback(callback2)
  }
注: aosp/3692572 で、Compose UI 内の子ディスパッチャーを自動的に管理する新しい NavigationEventDispatcherOwner コンポーザブルを導入します。ただし、この変更は現在のリリース カットには含まれておらず、次のリリース カットで予定されています。
Navigation テスト ライブラリ
- navigationeventライブラリ専用のテスト ユーティリティを提供する- navigationevent-testingモジュールを追加しました。(0e50b6)
- テスト用の TestNavigationEventCallback偽ユーティリティ クラスを追加します。コールバック メソッド呼び出しを記録し、受け取ったNavigationEventアイテムを保存して検証をサポートします。(4a0246)
- TestNavigationEventフェイク ユーティリティ関数を追加して、デフォルト値で- NavigationEventインスタンスを作成し、ナビゲーション イベント処理の単体テストを簡素化します。(3b63f5)
- テスト用の TestNavigationEventDispatcherOwner偽ユーティリティ クラスを追加します。フォールバックと有効状態変更イベントの数を追跡し、テストでのインタラクション検証をサポートします。(c8753e)
API の変更
- NavigationEventInputHandlerを- androidMainから- commonMainに移動して、KMP 共通コードで使用できるようにしました。イベントをディスパッチするための新しい- public send*メソッドを追加しました。- NavigationEventDispatcherのディスパッチ関数を- publicから- internalに変更しました。ユーザーはイベントを送信する際に- NavigationEventInputHandlerを使用する必要があります。(Ia7114)
- NavigationInputHandlerを- OnBackInvokedInputHandlerに変更しました。(I63405)
バグの修正
- 中間リストの割り当てを回避し、コールバック ディスパッチのパフォーマンスを改善することで、オーバーヘッドを削減するように NavigationEventDispatcherをリファクタリングしました。(I82702、I1a9d9)
- NavigationEventの- touchX、- touchY、- progressフィールドに- @FloatRangeアノテーションを追加して、コンパイル時に有効な値の範囲を適用し、API の安全性を向上させます。(Iac0ec)
バージョン 1.0.0-alpha04
2025 年 7 月 2 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha04 がリリースされました。バージョン 1.0.0-alpha04 にはこれらの commit が含まれています。
バグの修正
- implementedInJetBrainsForkを- navigationevent-composeに変更し、Compose の慣例に沿って- commonStubsターゲットを追加しました。JetBrains からリクエストされた変更。(f60c79)
- Kotlin/Native への Compose コンパイラ プラグインの適用を修正し、スタブが正しく生成されるようにしました。公開 API や動作には影響しません。(1890c9)
バージョン 1.0.0-alpha03
2025 年 6 月 18 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 にはこれらの commit が含まれています。
新機能
- navigationeventライブラリで Jetpack Compose の機能をサポートする新しい- navigationevent-composeモジュールを導入しました。(980d78)
- NavigationEventCompose に新しい- LocalNavigationEventDispatcherOwnerローカル コンポジションが追加されました。現在の合成中に使用可能かどうかを判断しやすくするための null 許容値を返します。- NavigationEventHandlerは、基になるオーナーが見つからない場合、エラーをスローするようになりました。(62ffda)
- NavigationEventCompose に、(予測型「戻る」ジェスチャー)イベントを処理するための新しい- NavigationEventHandlerコンポーザブルが追加されました。提供する一時停止ラムダで収集する必要がある- NavigationEventオブジェクトの- Flowを提供します。c42ba6
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 の変更
- 各 NavigationEventCallbackは一度に 1 つのNavigationEventDispatcherにのみ登録できるようになりました。複数のディスパッチャーに追加すると、IllegalStateExceptionがスローされます。この動作は、複数のディスパッチャを許可するOnBackPressedDispatcherとは異なります。(e82c19)
- isPassThroughを- valにして、ナビゲーション中のミューテーションを防ぎ、- NavigationEventのディスパッチが中断されないようにしました。(I0b287)
バージョン 1.0.0-alpha02
2025 年 6 月 4 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 にはこれらの commit が含まれています。
API の変更
- NavigationEventDispatcherのセカンダリ コンストラクタをデフォルト引数に置き換えます。(I716a0)
- NavigationEventCallbackから優先度プロパティを削除します。代わりに、優先度を- NavigationEventDispatcher.addCallback()に渡します。(I13cae)
バグの修正
- closeable の内部リストを同時に変更したために NavigationEventCallback.remove()が呼び出された場合に発生する可能性のあるConcurrentModificationExceptionを修正しました。(b/420919815)
バージョン 1.0.0-alpha01
2025 年 5 月 20 日
androidx.navigationevent:navigationevent-*:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 にはこれらの commit が含まれています。
新機能
- androidx.navigationeventライブラリは、システムバックと予測型「戻る」を処理するための KMP ファースト API を提供します。- NavigationEventDispatcherは、システム [戻る] イベントを受け取るために 1 つ以上の- NavigationEventCallbackインスタンスを登録するための共通 API として機能します。
- このレイヤは、androidx.activityで以前にリリースされた API の下に位置し、上位レベルのコンポーネントで Activity API を使用したり、Android フレームワークのOnBackInvokedDispatcherAPI を直接使用したりする際の、より制約の少ない代替手段となることを目指しています。androidx.activityAPI は、Activity 1.12.0-alpha01 の一部として、Navigation Event API の上に書き直されました。
