navigationevent
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 17 ביוני 2026 | 1.1.2 | - | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-navigationevent, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.1.2" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.1.2") }
מידע נוסף זמין במאמר הוספת יחסי תלות ב-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
אין הערות לגבי הגרסה של הארטיפקט הזה.
גרסה 1.1
גרסה 1.1.2
17 ביוני 2026
androidx.navigationevent:navigationevent-*:1.1.2 מופץ. גרסה 1.1.2 מכילה את השמירות האלה.
תיקוני באגים
- מעדכנים את יחסי התלות ב-Compose לגרסה 1.11.2. (a5e9259)
גרסה 1.1.1
6 במאי 2026
androidx.navigationevent:navigationevent-*:1.1.1 מופץ. גרסה 1.1.1 מכילה את השמירות האלה.
תיקוני באגים
- הוסר ה-no-op
NavigationEventHandlerכשנמצאים במצב בדיקה, כדי להפעיל את התכונה 'חזרה עם אנימציה' בגרסאות טרום-השקה של Android Studio.
גרסה 1.1.0
22 באפריל 2026
androidx.navigationevent:navigationevent-*:1.1.0 מופץ. גרסה 1.1.0 מכילה את השמירות האלה.
גרסה 1.1.0-rc01
8 באפריל 2026
androidx.navigationevent:navigationevent-*:1.1.0-rc01 מופץ. גרסה 1.1.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- העדכון של Compose compileSdk ל-API 37. כלומר, כשמשתמשים ב-Compose, נדרשת גרסת AGP מינימלית של 9.2.0. (Id45cd, b/413674743)
גרסה 1.1.0-beta01
27 במרץ 2026
androidx.navigationevent:navigationevent-*:1.1.0-beta01 מופץ. גרסה 1.1.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- הוספת
OnForwardCompletedFallbackאלNavigationEventDispatcher, כדי להפעיל התנהגות ברירת מחדל של המערכת לאירועי ניווט קדימה שלא טופלו. (Iac620, b/489138116)
גרסה 1.1.0-alpha01
25 בפברואר 2026
androidx.navigationevent:navigationevent-*:1.1.0-alpha01 מופץ. גרסה 1.1.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- תמיכה בכל יעדי Kotlin Multiplatform (KMP) ב-NavigationEvent-Compose. הפרדת פתרון הבעלים מ-
LocalViewכדי לאפשר למארחי פלטפורמות לספקLocalNavigationEventDispatcherOwnerכברירת מחדל, תוך שמירה עלLocalViewכגיבוי בטוח ב-Android. (Iae980, b/434940570, Iccf58)
שינויים ב-API
- מוסיפים את פונקציות ההרחבה
NavigationEvent.toBackEvent()ו-BackEvent.toNavigationEvent()כדי להמיר ביןBackEventל-NavigationEventב-Android. (Ie3b71, b/477001292)
גירסה 1.0
גרסה 1.0.2
28 בינואר 2026
androidx.navigationevent:navigationevent-*:1.0.2 מופץ. גרסה 1.0.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה קריסה שמתרחשת כשמשתמשים ב-
NavigationEventHandlerבתצוגות מקדימות של Android Studio. ה-handler מזהה עכשיו את מצב הבדיקה ולא עושה כלום, וכך מאפשר להציג את התצוגה המקדימה בלי לספק dispatcher. (I370f2, b/454313986).
גרסה 1.0.1
3 בדצמבר 2025
androidx.navigationevent:navigationevent-*:1.0.1 מופץ. גרסה 1.0.1 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג
ConcurrentModificationExceptionכשמסירים צאצאNavigationEventDispatcherכמו אלה שנוצרו באמצעותrememberNavigationEventDispatcherOwner(). (ec68a9, b/454363524)
גרסה 1.0.0
19 בנובמבר 2025
androidx.navigationevent:navigationevent-*:1.0.0 מופץ. גרסה 1.0.0 מכילה את השמירות האלה.
התכונות העיקריות של גרסה 1.0.0:
הספרייה Navigation Event יציבה עכשיו. Navigation Event היא ספריית AndroidX לטיפול באינטראקציות ברמת המערכת, כמו חזרה למסך הקודם וחיזוי החזרה ב-Android (ובפלטפורמות אחרות).
כדי לטפל ב
NavigationEvent, אתם יכולים להטמיעNavigationEventHandlerמשלכם שמבטל את הפונקציות הרצויות. לאחר מכן, צריך להוסיף את ה-handler ל-NavigationEventDispatcher. החל מגרסת Activity1.12.0, ComponentActivityמטמיע את הממשק החדשNavigationEventDispatcherOwner, שמספק רכיב לשליחת בקשות שמוכן לשימוש :// The NavigationEventInfo provides information about a navigation state object CurrentInfo : NavigationEventInfo() // you can retrieve this from any component that is a NavigationEventDispatcherOwner // or you can instantiate your own custom dispatcher val dispatcher = myActivity.navigationEventDispatcher val myHandler = object : NavigationEventHandler<NavigationEventInfo>( initialInfo = CurrentInfo, isBackEnabled = true ) { override fun onBackStarted(event: NavigationEvent) { // Prepare for the back event } override fun onBackProgressed(event: NavigationEvent) { // Use event.progress for predictive animations } // This is the required method for final event handling override fun onBackCompleted() { // Complete the back event } override fun onBackCancelled() { // Cancel the back event } } dispatcher.addHandler(myHandler)מודול
navigationevent:navigationevent-composeמספק פונקציית קומפוזיציה נוחהNavigationBackHandlerשמקשרת באופן אוטומטי את ה-handler ל-NavigationEventDispatcherהקרוב ביותר שלLocalNavigationEventDispatcherOwnerומאפשרת למפתחים לספק את ההתנהגות הרצויה כפרמטרים:object CurrentInfo : NavigationEventInfo() object PreviousInfo : NavigationEventInfo() val navEventState = rememberNavigationEventState( currentInfo = CurrentInfo, backInfo = PreviousInfo ) // Inside composition NavigationBackHandler( State = navEventState, isBackEnabled = true, // optional onBackCancelled = { // Cancel the back event }, // required onBackCompleted = { // Complete the back event } , )
שימוש בתבנית הזו ב-Compose מאפשר להעביר בקלות את NavigationEventState למעלה ולאפשר צפייה בו על ידי רכיבים שניתנים להרכבה שונים (כלומר, במקרה של Navigation3, אפשר להעביר את הסטטוס למעלה מתוך NavDisplay).
לכל
NavigationEventDispatcherיש אפשרות לספק משגר ראשי, גם במקרים של יצירת הודעה וגם במקרים אחרים. כך המפתחים יכולים ליצור מבנה היררכי שבו אפשר לנהל כמה רכיבי Dispatcher באמצעות רכיב הורה יחיד. אם יש הורה, קל יחסית לטפל בקבוצות של שולחי בקשות שאולי צריך להשבית או להסיר:// Non-Compose val parentDispatcher = NavigationEventDispatcher() val childDispatcher = NavigationEventDispatcher(parent = parentDispatcher) // Compose val composeChildDispatcher = rememberNavigationEventDispatcher( // This defaults to `LocalNavigationEventDispatcherOwner.current` // Must explicitly provide null to have an unparented dispatcher created here parent = NavigationEventDispatch() )הספרייה מאפשרת גם לספק אותות ישירות ל-
NavigationEventDispatcherבאמצעותNavigationEventInput. NavigationEventInputs פועל כצד ה'קלט' של מערכת הניווט, ומתרגם אירועים ספציפיים לפלטפורמה (כמו מחוות חזרה של המערכת או לחיצות על לחצנים) לאירועים סטנדרטיים שאפשר לשלוח אלNavigationEventDispatcher. מודולnavigationevent:navigationeventמספק כרגע 2NavigationEventInput: DirectNavigationEventInputכללי יותר שמאפשר שליחה של כל אירוע, ו-OnBackInvokedInputספציפי ל-Android שמאפשר ל-NavigationEventDispatcherלתמוך בחזרה למערכת ובחיזוי תנועת החזרה. אם מטמיעים מפזר משלכם (במקום להשתמש במפזר שמסופק על ידיComponentActivity), צריך להוסיף את הקלט באופן ידני:val dispatcher = NavigationEventDispatcher() dispatcher.addInput(DirectNavigationEventInput()) dispatcher.addInput(OnBackInvokedDefaultInput(invoker))
גרסה 1.0.0-rc01
5 בנובמבר 2025
androidx.navigationevent:navigationevent-*:1.0.0-rc01 מופץ. גרסה 1.0.0-rc01 מכילה את השמירות האלה.
גרסה 1.0.0-beta01
8 באוקטובר 2025
androidx.navigationevent:navigationevent-*:1.0.0-beta01 מופץ. גרסה 1.0.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- צריך לתקן את ההערה
FloatRangeב-NavigationEvent.touchXוב-NavigationEvent.touchY. הערכים האלה מייצגים קואורדינטות פיקסלים מוחלטות ואין להם1.0גבול עליון. (I4b205, b/445989313) - משנים את השם של הרכיב הקומפוזבילי
NavigationEventDispatcherOwnerל-rememberNavigationEventDispatcherOwner. הפונקציה מחזירה עכשיו אתNavigationEventDispatcherOwnerישירות. כדי לספק את הבעלים הזה לקומפוזיציה משנית, משתמשים ב-CompositionLocalProvider. (I874b2, b/444446629)
גרסה 1.0.0-alpha09
24 בספטמבר 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha09 מופץ. גרסה 1.0.0-alpha09 מכילה את השמירות האלה.
שינויים ב-API
- במקום ליצור מופע של
Idle(), צריך להשתמש ישירות באובייקט הסינגלטוןNavigationEventTransitionState.Idle. (Ic7d9e, b/444734264) - הגדרת בנאים נוחים כפנימיים; קבלת מופעים באמצעות
NavigationEventDispatcher.historyציבורי במקום בנייה ישירה. (I3b7e0, b/444734264) - נדרשת יצירה של
NavigationEventStateבאמצעותrememberNavigationEventState. ה-constructor הוא עכשיו פנימי. (Ie143c, b/444734264) - להשתמש ב-
onBackCompletedFallbackבמקום ב-fallbackOnBackPressedובפרמטר constructor. ההתנהגות לא משתנה. הפעולה מופעלת רק באירועי חזרה שהושלמו ולא טופלו. (Idabe9, b/444734264) - הבונה הראשי של
NavigationEventHistory(mergedHistory, currentIndex)הוא עכשיוinternal. צרכנים חיצוניים צריכים להשתמש בבנאים הציבוריים (בנאי ריק או בנאי מבוסס-מחיצות) כדי ליצור מופעים. (I1c047, b/444734264) - Make
View.setViewTreeNavigationEventDispatcherOwneraccept nullable owner (Ic9eb6, b/444436762) - התפקיד של
NavigationEventInfoהוא עכשיוabstract classבמקוםinterface. מעדכנים את כל ההטמעות בהתאמה אישית כך שיורשות מהמחלקה (לדוגמה,data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264) - המאפיין
NavigationEventDispatcher.stateוהפונקציהgetState<T>()מדור קודם הוסרו. משתמשים בתהליכי העבודה החדשים והנפרדים שלdispatcher.transitionState(לגבי התקדמות התנועה) ושלdispatcher.history(לגבי ערימת הניווט). (Ic2ceb, b/444734264) - ה-callback
NavigationEventInput.onInfoChanged(...)מוחלף. מטמיעים את הקריאה החוזרת (callback) החדשהonHistoryChanged(history: NavigationEventHistory)כדי לקבל עדכונים כאובייקטNavigationEventHistoryיחיד. (I23e0b, b/444734264) - השקת
NavigationEventDispatcher.historyStateFlowחדש וגלובלי. התהליך הזה לא גנרי, והוא מאפשר לצופים להירשם רק לשינויים במערך הניווט. הוא נשאר יציב במהלך התקדמות המחוות. זהו המקבילה שלtransitionState. (I1db10, b/444734264) - השקת
NavigationEventDispatcher.transitionStateStateFlowחדש וגלובלי. התהליך הלא-גנרי הזה מאפשר לצופים להירשם רק למצב הפיזי של התנועה (Idle/InProgress), בנפרד מההיסטוריה. (I171fa, b/444734264) - תציג את הכיתה
NavigationEventHistoryState. ה-API הזה ישמש כ-API הליבה לצפייה בהיסטוריה של פרטי הניווט, בנפרד ממצב התנועה. (I81ca5, b/444734264) -
NavigationEventמסומן עכשיו כ-@Immutable, וכך מאפשר ל-Compose Compiler לבצע אופטימיזציה של הרכבות מחדש. (If78c7, b/444734264) - ממשקי ה-API של
navigationevent-composehandler עודכנו. הפונקציותNavigationEventHandlerו-NavigationBackHandler(והווריאציות שלהן) תומכות עכשיו בעומס יתר חדש שמקבלNavigationEventStates שהועברו למעלה. העומסים הפשוטים (שמקבליםcurrentInfo) נשמרים ועכשיו משתמשים במודל המצב החדש הזה באופן פנימי. (Ic3251, b/444734264) - מוסיפים את מחזיק המצב החדש
@StableNavigationEventState<T>לספרייתnavigationevent-compose. האובייקט הזה משלב היסטוריה מקומית עם מצב תנועה מקומי, והוא יהיה הקישור העיקרי ביןrememberNavigationEventStateלביןNavigationEventHandler. (Ifb69f, b/444734264) - הוספת מאפיין חדש מסוג
transitionState: TransitionStateלקריאה בלבדtransitionState: TransitionStateל-NavigationEventHandler. מעכשיו, רכיבי Handler שומרים על מצב המעבר שלהם, ומערכות חיצוניות יכולות לעקוב אחריו. (I9acd2, b/444734264) - הצגת המחלקה החדשה
TransitionStatesealed. ה-API הזה ישמש כ-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. ההסבר הזה מבהיר שהקריאה החוזרת מדווחת על מצב ההפעלה המשותף של כל רכיבי ה-handler, ולא רק על אחד מהם. (I1af61, b/443711297) - הסרת
hasEnabledHandler()מהחשבוןNavigationEventDispatcher;. במקום זאת, צריך להשתמש ב-NavigationEventInput.onHasEnabledHandlersChanged. (Idef72, b/443711297) - מוסיפים
onInfoChangedcallback ל-NavigationEventInputכדי להודיע למאזינים על שינויים בהיסטוריית הניווט. כך אפשר לקבל את ההקשר המלא של הערימות הנוכחיות, הקודמות והבאות, ולשנות את הקלט בהתאם למידע ההקשרי. (I69a8b, b/443282983) - תכין את
NavigationEvent'sswipeEdgeבתור@IntDef(Icee54, b/443950342) - מוסיפים פרמטר
priorityל-NavigationEventDispatcher.addInputכדי להגדיר את ההיקף של פונקציית dispatcher לעדיפות אחת. אירועים כמוonHasEnabledCallbacksChangedמופעלים עכשיו רק כשמתבצע שינוי בפונקציות callback בעדיפות הזו. (I3e488, b/443711297) - כדי שהשם יהיה ברור יותר, צריך לשנות את השם של הפרמטר
NavigationEventDispatcherמ-parentDispatcherל-parent. (Id4f1f, b/443801782) - הסרת
NavigationEventPriorityלטובת@IntDefלמשתמשי Java (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
10 בספטמבר 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha08 מופץ. גרסה 1.0.0-alpha08 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו API מבוסס-lambda
NavigationEventHandlerשמחליף את ה-handler מבוסס-הזרימה. אפשר לטפל בתנועות החלקה קדימה ואחורה באמצעות קריאות חוזרות פשוטות במקום לאסוף זרימות, וכך לצמצם את התוכן הסטנדרטי ולמנוע בעיות שקשורות לביטול. הוספנו אתNavigationBackHandlerו-NavigationForwardHandlerכממשקי API נוחים וממוקדים. מסירים אתNavigationEventHandlerמבוסס ה-Flow ועוברים לשימוש בקריאות החוזרות החדשות. (I23bac, b/436248277) - מאפשרת למאזינים פסיביים לגשת לכל מקבץ הפעילויות הקודמות (back stack) באמצעות מידע משולב על חזרה. מאפשרת לממשקי משתמש להציג תצוגות מקדימות והיסטוריית ניווט מוטמעת במקום להיות מוגבלים לקריאה החוזרת העליונה ביותר. (I7a510, b/436248277)
- הוספת מודל מפורש של חזרה, נוכחיות והתקדמות כדי להבהיר את מצב הניווט ולתמוך בניווט קדימה באמצעות רכיבי handler מוטמעים. (Ib86da, b/420443609)
- הוספה של methods
onForward*ו-isForwardEnabledל-NavigationEventCallback. (Ic100f, b/436248290) - הוספת תמיכה בניווט קדימה ל-
NavigationEventInput. (I5734b)
שינויים ב-API
- הפעלת בדיקה של אירועי ניווט קדימה באמצעות
TestNavigationEventCallback. משתמשים בוויםisForwardEnabledו-onForward*. (I21fb5, b/420443609) - שינוי השם של
onEvent*בקשות להחזרת שיחה לonBack*בNavEvent. (I228b3, b/436248290) - הפונקציה ממירה את
SwipeEdgeלמחלקה מוטמעת. (Id5e01) - הופכים את הספרייה
navigationeventלניתנת להפעלה הדדית עם Java. עכשיו יש גישה מלאה לכל ממשקי ה-API הציבוריים מקוד Java, כך שאפשר לשלב אותם בצורה חלקה בפרויקטים שכוללים שפות שונות או רק Java. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294) - שינוי שם התפקיד
NavigationEventCallbackל-NavigationEventHandlerכדי להבהיר את התפקידים ב-API. השינוי הזה משקף טוב יותר את המטרה של המחלקה: טיפול במחוות ניווט מרובות שלבים. ה-method התואםaddCallbackהוא עכשיוaddHandler. (I2492a, b/443040331)
תיקוני באגים
- למנוע את ההפעלה של חזרה לגרסה קודמת בניווט קדימה. (I74814, b/436248290)
- הוספת תמיכה בניווט קדימה עם חיזוי.
NavigationEventממשקי ה-API מטפלים עכשיו בתנועות חזרה ובתנועות קדימה, ומאפשרים אנימציות עקביות לשני כיווני הניווט. (Idc98c, b/436248290) - למנוע קריסה של
IllegalStateExceptionבמהלך רה-קומפוזיציה כשמסירים רכיב צאצאNavigationEventDispatcherOwner. (Iff50c, b/412629020) - מאזינים פסיביים יכולים עכשיו לגשת לכל מקבץ הפעילויות הקודמות (back stack) באמצעות מידע משולב על חזרה, וכך ממשקי משתמש יכולים להציג תצוגות מקדימות והיסטוריית ניווט מוטמעת במקום להיות מוגבלים לקריאה החוזרת העליונה ביותר. (I7a510, b/436248277)
גרסה 1.0.0-alpha07
27 באוגוסט 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha07 מופץ. גרסה 1.0.0-alpha07 מכילה את השמירות האלה.
שינויים ב-API
- הסרה של
NavigationEventDispatcher.onHasEnabledCallbacksChanged. (I50e97) - יצירת תקציר של
NavigationEventCallback.onEventCompleted()(I36b38) - שינוי השיטות של
NavigationEventCallback#on*ל-protected. כדי לשנות את ההגדרות, צריך לעדכן את קוד ההתקשרות. (I6b691) - שינוי השם של פונקציות
DirectNavigationEventInput. (Iffb62) - שינוי השם של
NavigationEventInput.onAttachלonAdded. (I2d0b8) - שינוי השם של
NavigationEventInput.onDetachלonRemoved. (I2d0b8) - שינוי השם של
NavigationEventInputHandlerלNavigationEventInput. (I676a4) - הוספת
@EmptySuperאלNavigationEventInput.onHasEnabledCallbacksChanged. (If9853) - מטמיעים את
onAttachב-NavigationEventInputHandler. (I03648) - מטמיעים את
onDetachב-NavigationEventInputHandler. (I03648) - ברירת המחדל של
NavigationEventCallbackהיא מופעלת בזמן היצירה. (Ic0188) - מחליפים את
NavigationEventInput.addOnHasEnabledCallbacksChangedCallbackב-NavigationEventInput.onHasEnabledCallbacksChanged. (I64e93) - נדרש ה-thread הראשי למשך
NavigationEventDispatcher.addInput. (Ic2930) - נדרש ה-thread הראשי למשך
NavigationEventDispatcher.removeInput. (Ic2930) - הסרה של
Dispatcher.addOnHasEnabledCallbacksChangedCallback. החלפה ב-Dispatcher.onHasEnabledCallbacksChanged. (Ida3e3, b/436530096)
תיקוני באגים
- תוקן באג שבו הוספה של handler שכבר צורף או הסרה של handler שלא צורף הפעילו לוגיקה שגויה של מחזור החיים. (I9e47b)
גרסה 1.0.0-alpha06
13 באוגוסט 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha06 מופץ. גרסה 1.0.0-alpha06 מכילה את השמירות האלה.
תכונות חדשות
Passive Listeners API
עכשיו אפשר להעביר מידע הקשרי מותאם אישית מכל מארח ניווט ולהאזין באופן פסיבי לשינויים במצב המחוות מכל מקום בממשק המשתמש. ההגדרה הזו מפעילה אנימציות מבוססות-הקשר לחיזוי של תנועת החזרה ולניווט אחר שמבוסס על מחוות.
התכונה הזו כוללת שני חלקים:
- העברת מידע – אפשר להשתמש ב-
NavigationEventInfoכדי להעביר נתונים בהתאמה אישית. - Consuming State – משתמשים ב-
dispatcher.state(NavigationEventState) כדי לראות את ההתקדמות וההקשר של תנועת היד.
-
NavigationEventCallbackעכשיו חושף את שיטתsetInfo(currentInfo, previousInfo)להגדרת הקשר של תנועת מגע בשיחה אחת (I1d5e7, b/424470518). -
NavigationEventHandlerמוסיף עומס יתר חדש שמקבלcurrentInfoו-previousInfo, מה שהופך אותו ל-API הראשי לאספקת הקשר באפליקציות Compose (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). ממשקי ה-API האלה שמבוססים עלStateFlowמאפשרים לכל ממשק משתמש לעקוב אחרי התקדמות המחווה ונתונים הקשריים בלי לטפל באירוע ישירות.
דוגמה:
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 */ }
}
הוספת מאפיין
progressל-NavigationEventState(I7b196) שמחזירlatestEvent.progressאם הפעולה מתבצעת, או0Fאחרת:val progress = state.progressמוסיפים את
NavigationEventDispatcherOwnercomposable כדי ליצור, לקשר ולסלק מופעים שלNavigationEventDispatcherבאופן היררכי. הפעלה של שליטה דינמית במצב המופעל של כלי השליחה וניקוי אוטומטי.@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
שינויים ב-API
- הפרמטר
isPassthroughהוסר מה-NavigationEventCallback. (I99028, b/424470518) - הקונסטרוקטורים של
NavigationEventStateהם עכשיו פנימיים. לצורך בדיקה, מעדכנים את הסטטוס (ברירת המחדל היאIdle) באמצעותDirectNavigationEventInputHandler. מתקשרים למספר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) - הקידומות של הפונקציות
send*ב-NavigationEventInputHandlerשונו ל-handle*. (Iffcaf) OnBackInvokedInputHandlerמרחיב עכשיו אתabstractהחדשNavigationInputHandler. (Ib45aa)- השתנה
NavigationEventDispatcherOwnerכך שנדרש מפיץ ראשי שבו צריך להעביר במפורש אתnullכדי ליצור מפיץ בסיסי. (Ia6f64, b/431534103)
תיקוני באגים
- שיפרנו את היעילות על ידי מניעת העתקה של קולקציות ב-
NavigationEventDispatcher.dispose(). (I4ab09) - תוקנה בעיה שבה
NavigationEventHandlerלא הגיב כראוי לשינויים במצב המופעל שלו. (Ia5268,I19bec, I5be5c, b/431534103)
עדכונים ב-Docs
- המסמכים של KDocs עבור
NavigationEventהורחבו כדי להבהיר את התפקיד שלו כעטיפה מאוחדת של אירועים ואת התנהגות מאפייני הפרטים בסוגי ניווט שונים (מחוות, לחיצות). (I91e8d) - עדכנו את מאמרי העזרה של ממשקי ה-API של Compose לטיפול בחזרה למערכת (
BackHandler, PredictiveBackHandler, NavigationEventHandler) כדי להסביר את ההתנהגות באופן ספציפי לגבי סדר ההתקשרות חזרה. (I7ab94, )
עדכון תלות
-
NavigationEventתלויה עכשיו ב-Compose Runtime 1.9.0-beta03, שמאפשר לארטיפקטnavigationevent-composeלתמוך בכל יעדי KMP. (Ia1b87)
גרסה 1.0.0-alpha05
30 ביולי 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha05 מופץ. גרסה 1.0.0-alpha05 מכילה את השמירות האלה.
תמיכה בהיררכיה של הורה-צאצא:
ל-NavigationEventDispatcher יכולים להיות עכשיו משגרים ראשיים ומשגרים משניים, שיוצרים מבנה עץ היררכי. כך אירועי הניווט יכולים להתפשט ולנוהל בצורה גמישה יותר ברכיבי ממשק משתמש מורכבים של Compose, על ידי שיקוף ההיררכיה המבנית של ממשק המשתמש באמצעות משגרים משורשרים. (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
בנוסף, הנכס isEnabled ב-NavigationEventCallback פועל עכשיו בהתאם למצב ההפעלה של רכיב השליחה המשויך. כלומר, קריאה חוזרת נחשבת למופעלת רק אם גם הקריאה החוזרת עצמה וגם רכיב השליחה שלה (כולל הרכיבים שמעליה בהיררכיה) מופעלים. כך מובטח בקרה היררכית עקבית על הפעלת הקריאה החוזרת. (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()
הוספנו שיטה חדשה לניקוי נכון של רכיבי Dispatcher ורכיבי הצאצא שלהם.dispose() הפעלת הפונקציה dispose() מפסיקה את ההאזנה כדי למנוע דליפות זיכרון, משחררת באופן רקורסיבי את כל רכיבי ה-dispatcher של הצאצאים, מסירה את כל הקריאות החוזרות שרשומות ב-dispatcher ומבטלת את הקישור שלו לרכיב האב. כך תוכלו לוודא שהמשאבים ישוחררו בצורה נכונה כשאין יותר צורך ב-dispatchers. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
אם קוראים לשיטה ציבורית כלשהי ב-dispatcher שהוצא משימוש, מתקבלת מיד שגיאת IllegalStateException. כך אפשר למנוע כשלים שקטים ולעזור למפתחים לזהות שימוש לא תקין במהלך הפיתוח. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
הערה: אנחנו נציג NavigationEventDispatcherOwner Composable חדש שמנהל באופן אוטומטי dispatcher צאצא בממשק המשתמש של Compose ב-aosp/3692572. עם זאת, השינוי הזה לא נכלל בגרסה הנוכחית, ואנחנו מתכננים להוסיף אותו בגרסה הבאה.
Navigation Testing Library
- הוספת מודול
navigationevent-testingכדי לספק כלי בדיקה ייעודיים לספרייתnavigationevent. (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) - מוסיפים הערות
@FloatRangeלשדותtouchX,touchYו-progressב-NavigationEventכדי לאכוף טווחים של ערכים תקינים בזמן הקומפילציה ולשפר את הבטיחות של ה-API. (Iac0ec)
גרסה 1.0.0-alpha04
2 ביולי 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha04 מופץ. גרסה 1.0.0-alpha04 מכילה את השמירות האלה.
תיקוני באגים
- השתמשתי ב-
implementedInJetBrainsForkכדיnavigationevent-composeוהוספתי יעדcommonStubsבהתאם למוסכמות של Compose. שינוי שנתבקש על ידי JetBrains. (f60c79) - בוצע תיקון של היישום של התוסף של מהדר Compose ל-Kotlin/Native כדי להבטיח יצירה נכונה של קובץ stub. אין השפעה על ממשקי API ציבוריים או על אופן הפעולה שלהם. (1890c9)
גרסה 1.0.0-alpha03
18 ביוני 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03 מופץ. גרסה 1.0.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו מודול חדש,
navigationevent-compose, כדי לתמוך בתכונות של Jetpack Compose בספרייתnavigationevent. (980d78) NavigationEventנוספה לקומפוזיציהLocalNavigationEventDispatcherOwnerקומפוזיציה מקומית חדשה. היא מחזירה ערך שניתן להגדרה כ-null כדי לקבוע בצורה טובה יותר אם היא זמינה בקומפוזיציה הנוכחית. הפונקציהNavigationEventHandlerתציג עכשיו שגיאה אם לא נמצא הבעלים הבסיסי. (62ffda)NavigationEventבספריית Compose נוסףNavigationEventHandlerComposable חדש לטיפול באירועים (תנועת חזרה עם חיזוי). היא מספקתFlowשל אובייקטיםNavigationEventשצריך לאסוף בפונקציית ה-lambda להשהיה שאתם מספקים 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יכול להיות רשום עכשיו רק ב-NavigationEventDispatcherאחד בכל פעם. הוספה שלו לכמה מרכזי ניהול משלוחים תגרום להצגתIllegalStateException. שימו לב שההתנהגות הזו שונה מOnBackPressedDispatcher, שמאפשרת שימוש בכמה מעבירים. (e82c19) - הפכנו את
isPassThroughל-valכדי למנוע מוטציה במהלך הניווט, שיכולה לשבש את השליחה שלNavigationEvent. (I0b287)
גרסה 1.0.0-alpha02
4 ביוני 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha02 מופץ. גרסה 1.0.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- מחליפים את ה-constructor המשני של
NavigationEventDispatcherבארגומנטים שמוגדרים כברירת מחדל. (I716a0) - הסרת מאפיין העדיפות מהמאפיין
NavigationEventCallback. להעביר את העדיפות אלNavigationEventDispatcher.addCallback(). (I13cae)
תיקוני באגים
- תוקנה בעיה
ConcurrentModificationExceptionשיכולה להתרחש כשמתבצעת קריאה ל-NavigationEventCallback.remove()בגלל שינוי בו-זמני של הרשימה הפנימית של פריטים שניתן לסגור. (b/420919815)
גרסה 1.0.0-alpha01
20 במאי 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha01 מופץ. גרסה 1.0.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- ספריית
androidx.navigationeventמספקת API שמתמקד ב-KMP לטיפול בחזרה למערכת וגם בחזרה עם חיזוי. NavigationEventDispatcherמשמש כממשקי API משותפים לרישום של מופע אחד או יותר שלNavigationEventCallbackלקבלת אירועים של חזרה למערכת. - השכבה הזו נמצאת מתחת לממשקי ה-API שפורסמו בעבר ב-
androidx.activity, והיא נועדה להיות תחליף פחות דעתני לשימוש בממשקי Activity API ברכיבים ברמה גבוהה יותר או לשימוש ישיר בממשקי Android frameworkOnBackInvokedDispatcherAPI. ממשקי ה-API שלandroidx.activityנכתבו מחדש על בסיס ממשקי ה-API של אירועי הניווט כחלק מ-Activity 1.12.0-alpha01.