navigationevent
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 23 सितंबर, 2026 | 1.1.2 | 1.2.0-rc01 | - | - |
डिपेंडेंसी का एलान करना
navigationevent पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.2.0-rc01" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.2.0-rc01") }
डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 1.2
वर्शन 1.2.0-rc01
23 सितंबर, 2026
androidx.navigationevent:navigationevent-*:1.2.0-rc01 रिलीज़ हो गया है. वर्शन 1.2.0-rc01 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
androidx.lifecycle:lifecycle-runtimeडिपेंडेंसी को 2.10.0 पर अपडेट किया गया. AGP 9.5.0-alpha04 या इसके बाद के वर्शन के साथ बंडल किए गए लाइफ़साइकल रनटाइम लिंट चेक चलाने के लिए, यह वर्शन ज़रूरी है. (I99bfd, b/556807521)
वर्शन 1.2.0-alpha04
12 अगस्त, 2026
androidx.navigationevent:navigationevent-*:1.2.0-alpha04 रिलीज़ हो गया है. वर्शन 1.2.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NavigationEventInputमें नए एपीआईhasEnabledBackHandlersऔरhasEnabledForwardHandlersजोड़े गए हैं, ताकि दिशा के हिसाब से काम करने की सुविधाओं को अलग-अलग ट्रैक किया जा सके. (I772bf, b/123456789)
गड़बड़ियां ठीक की गईं
- व्यू ट्री के मालिकों के उपलब्ध न होने पर,
LocalNavigationEventDispatcherOwnerको हल करने के लिए, फ़ॉलबैक कॉन्टेक्स्ट ट्रैवर्सल लुकअप की सुविधा जोड़ी गई है. (I51e30, b/530641649)
वर्शन 1.2.0-alpha03
29 जुलाई, 2026
androidx.navigationevent:navigationevent-*:1.2.0-alpha03 रिलीज़ हो गया है. वर्शन 1.2.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- डेस्टिनेशन के टाइटल और जगह के यूआरएल को पसंद के मुताबिक बनाने के लिए,
NavigationEventInfoमेंtitleऔरurlजोड़े गए. (Ie5619) - navigationevent में
NavigationEventDispatcherOwnerफ़ैक्ट्री जोड़ी गई. (I740d3) - ExperimentalNavigationEventApi एनोटेशन जोड़ें, ताकि नए और अस्थिर एपीआई के लिए साफ़ तौर पर ऑप्ट-इन किया जा सके. (Ia5d25)
गड़बड़ियां ठीक की गईं
- BrowserInput को wasmJs टारगेट में, एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई के तौर पर सभी के लिए उपलब्ध कराएं. (Icc2a8)
वर्शन 1.2.0-alpha02
15 जुलाई, 2026
androidx.navigationevent:navigationevent-*:1.2.0-alpha02 रिलीज़ हो गया है. वर्शन 1.2.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- डेवलपर को सीधे तौर पर मौजूदा हैंडलर की स्थिति के बारे में क्वेरी करने की अनुमति देने के लिए,
NavigationEventInputमेंhasEnabledHandlersप्रॉपर्टी जोड़ें. इससे उन्हें कॉलबैक पर भरोसा नहीं करना पड़ेगा. (I8ecec)
गड़बड़ियां ठीक की गईं
NavigationEventDispatcherमें फ़ॉलबैक के ट्रांसफ़र से जुड़ी समस्या हल करें. (I015f8, b/531988076)
वर्शन 1.2.0-alpha01
01 जुलाई, 2026
androidx.navigationevent:navigationevent-*:1.2.0-alpha01 रिलीज़ हो गया है. वर्शन 1.2.0-alpha01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
androidx.benchmarkका स्कोरminSdkअब 24 है. (Ic2a85)- अनसुलझे फ़ॉरवर्ड नेविगेशन इवेंट को ट्रैक और टेस्ट करने के लिए, TestNavigationEventDispatcherOwner में onForwardCompletedFallback जोड़ें. (I6bbd7)
- TestNavigationEventDispatcherOwner में navigationEventInput जोड़ें, ताकि टेस्ट में नेविगेशन इवेंट को आसानी से सिम्युलेट किया जा सके. (I3ef48)
गड़बड़ियां ठीक की गईं
- यह कुकी, एपीआई की जानकारी को मिटाती है (Ia8066)
- डिस्कनेक्ट किए गए इनपुट को भेजे गए नेविगेशन इवेंट को अनदेखा करें. पहले, हटाए गए इनपुट पर इवेंट भेजने से
IllegalStateExceptionदिखता था. (I1a8bc, b/515890298) - Compose Multiplatform 1.11.0 पर अपग्रेड करते समय, JetBrains के पुराने फ़ोर्क वर्शन में सिंबल के डुप्लीकेट होने से रोकें. (I4cc4d)
इस आर्टफ़ैक्ट के लिए कोई रिलीज़ नोट उपलब्ध नहीं है.
वर्शन 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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android Studio Previews में अनुमानित बैक नेविगेशन की सुविधा चालू करने के लिए, जांच मोड में no-op
NavigationEventHandlerको हटाया गया.
वर्शन 1.1.0
22 अप्रैल, 2026
androidx.navigationevent:navigationevent-*:1.1.0 रिलीज़ हो गया है. वर्शन 1.1.0 में ये बदलाव शामिल हैं.
वर्शन 1.1.0-rc01
08 अप्रैल, 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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NavigationEventDispatcherमेंOnForwardCompletedFallbackजोड़ें. इससे, फ़ॉरवर्ड नेविगेशन के ऐसे इवेंट के लिए सिस्टम का डिफ़ॉल्ट व्यवहार चालू हो जाएगा जिन्हें हैंडल नहीं किया गया है. (Iac620, b/489138116)
वर्शन 1.1.0-alpha01
25 फ़रवरी, 2026
androidx.navigationevent:navigationevent-*:1.1.0-alpha01 रिलीज़ हो गया है. वर्शन 1.1.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- NavigationEvent-Compose में सभी Kotlin Multiplatform (केएमपी) टारगेट के लिए सहायता उपलब्ध है. मालिक की समस्या को
LocalViewसे अलग करें, ताकि प्लैटफ़ॉर्म होस्ट डिफ़ॉल्टLocalNavigationEventDispatcherOwnerउपलब्ध करा सकें. साथ ही, Android परLocalViewको सुरक्षित फ़ॉलबैक के तौर पर बनाए रख सकें. (Iae980, b/434940570, Iccf58)
एपीआई में हुए बदलाव
- Android के
BackEventऔरNavigationEventके बीच बदलने के लिए,NavigationEvent.toBackEvent()औरBackEvent.toNavigationEvent()एक्सटेंशन फ़ंक्शन जोड़ें. (Ie3b71, b/477001292)
संस्करण 1.0
वर्शन 1.0.2
28 जनवरी, 2026
androidx.navigationevent:navigationevent-*:1.0.2 रिलीज़ हो गया है. वर्शन 1.0.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Android Studio के प्रीव्यू वर्शन में
NavigationEventHandlerका इस्तेमाल करते समय होने वाली क्रैश की समस्या ठीक की गई है. अब हैंडलर, जांच मोड का पता लगाता है और कुछ नहीं करता. इससे झलक, उपलब्ध कराए गए डिस्पैचर के बिना रेंडर हो जाती है. (I370f2, b/454313986).
वर्शन 1.0.1
03 दिसंबर, 2025
androidx.navigationevent:navigationevent-*:1.0.1 रिलीज़ हो गया है. वर्शन 1.0.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- इस कुकी का इस्तेमाल, चाइल्ड
NavigationEventDispatcherको हटाने परConcurrentModificationExceptionको ठीक करने के लिए किया जाता है. जैसे,rememberNavigationEventDispatcherOwner()का इस्तेमाल करके बनाए गए चाइल्डNavigationEventDispatcher. (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लागू किया जा सकता है. इससे, ज़रूरी फ़ंक्शन को बदला जा सकता है. इसके बाद, आपकोNavigationEventDispatcherमें हैंडलर जोड़ना होगा. ऐक्टिविटी1.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उपलब्ध कराता है. यह हैंडलर को सबसे नज़दीकीLocalNavigationEventDispatcherOwnerकेNavigationEventDispatcherसे अपने-आप जोड़ देता है. साथ ही, डेवलपर को पैरामीटर के तौर पर मनमुताबिक व्यवहार उपलब्ध कराने की अनुमति देता है: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के पास, कंपोज़ और नॉन-कंपोज़, दोनों मामलों के लिए पैरंट डिस्पैचर देने की सुविधा होती है. इससे डेवलपर को हैरारकी वाला स्ट्रक्चर बनाने की सुविधा मिलती है. इसमें कई डिस्पैचर को एक ही पैरंट मैनेज कर सकता है. पैरंट ग्रुप होने से, डिस्पैचर के उन ग्रुप को मैनेज करना आसान हो जाता है जिन्हें बंद या हटाया जा सकता है:// 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() )लाइब्रेरी की मदद से,
NavigationEventInputके ज़रिए सीधेNavigationEventDispatcherको सिग्नल दिए जा सकते हैं.NavigationEventInput, नेविगेशन सिस्टम के "इनपुट" के तौर पर काम करता है. यह प्लैटफ़ॉर्म के हिसाब से होने वाले इवेंट (जैसे, सिस्टम के बैक जेस्चर या बटन क्लिक) को स्टैंडर्ड इवेंट में बदलता है. इन इवेंट कोNavigationEventDispatcherको भेजा जा सकता है. फ़िलहाल,navigationevent:navigationeventमॉड्यूल दोNavigationEventInputउपलब्ध कराता है: एक सामान्यDirectNavigationEventInput, ताकि किसी भी इवेंट को भेजा जा सके. दूसरा, Android के लिए खासOnBackInvokedInput, ताकिNavigationEventDispatcher, सिस्टम बैक और अनुमानित बैक जेस्चर की सुविधा के साथ काम कर सके. अगर आपकोComponentActivityकी ओर से उपलब्ध कराए गए डिस्पैचर के बजाय, अपने डिस्पैचर का इस्तेमाल करना है, तो आपको मैन्युअल तरीके से इनपुट जोड़ना होगा:val dispatcher = NavigationEventDispatcher() dispatcher.addInput(DirectNavigationEventInput()) dispatcher.addInput(OnBackInvokedDefaultInput(invoker))
वर्शन 1.0.0-rc01
05 नवंबर, 2025
androidx.navigationevent:navigationevent-*:1.0.0-rc01 रिलीज़ हो गया है. वर्शन 1.0.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 1.0.0-beta01
08 अक्टूबर, 2025
androidx.navigationevent:navigationevent-*:1.0.0-beta01 रिलीज़ हो गया है. वर्शन 1.0.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NavigationEvent.touchXऔरNavigationEvent.touchYके लिए,FloatRangeएनोटेशन को ठीक करें. ये वैल्यू, पिक्सल के सटीक कोऑर्डिनेट दिखाती हैं. इनकी कोई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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
Idle()को इंस्टैंशिएट करने के बजाय, सीधेNavigationEventTransitionState.Idleसिंगलटन ऑब्जेक्ट का इस्तेमाल करें. (Ic7d9e, b/444734264)- सुविधा देने वाले कंस्ट्रक्टर को इंटरनल बनाएं. सीधे तौर पर कंस्ट्रक्शन करने के बजाय, सार्वजनिक
NavigationEventDispatcher.historyके ज़रिए इंस्टेंस पाएं. (I3b7e0, b/444734264) NavigationEventStateकोrememberNavigationEventStateके ज़रिए बनाने की ज़रूरत होती है; कंस्ट्रक्टर अब इंटरनल है. (Ie143c, b/444734264)onBackCompletedFallbackको अपनाएं,fallbackOnBackPressedके इस्तेमाल और कंस्ट्रक्टर पैरामीटर को बदलें. व्यवहार में कोई बदलाव नहीं किया गया है. इसे सिर्फ़ पूरे हो चुके और हैंडल नहीं किए गए बैक इवेंट पर लागू किया जाता है. (Idabe9, b/444734264)NavigationEventHistory(mergedHistory, currentIndex)का मुख्य कंस्ट्रक्टर अबinternalहै. बाहरी उपभोक्ताओं को इंस्टेंस बनाने के लिए, सार्वजनिक कंस्ट्रक्टर (खाली कंस्ट्रक्टर या पार्टीशन पर आधारित कंस्ट्रक्टर) का इस्तेमाल करना होगा. (I1c047, b/444734264)View.setViewTreeNavigationEventDispatcherOwnerको ऐसे मालिक को स्वीकार करने की अनुमति दें जो शून्य हो सकता है (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(...)कॉलबैक को बदल दिया गया है. एकलNavigationEventHistoryऑब्जेक्ट के तौर पर अपडेट पाने के लिए, नयाonHistoryChanged(history: NavigationEventHistory)कॉलबैक लागू करें. (I23e0b, b/444734264)- नया ग्लोबल
NavigationEventDispatcher.historyStateFlowलॉन्च किया गया है. इस नॉन-जेनेरिक फ़्लो की मदद से, ऑब्ज़र्वर सिर्फ़ नेविगेशन स्टैक में हुए बदलावों की सदस्यता ले सकते हैं. साथ ही, यह फ़्लो जेस्चर के दौरान भी स्थिर रहता है. यहtransitionStateका काउंटरपार्ट है. (I1db10, b/444734264) - नया ग्लोबल
NavigationEventDispatcher.transitionStateStateFlowलॉन्च किया गया है. इस नॉन-जेनेरिक फ़्लो की मदद से, ऑब्ज़र्वर सिर्फ़ फ़िज़िकल जेस्चर की स्थिति (Idle/InProgress) की सदस्यता ले सकते हैं. यह सदस्यता, इतिहास से अलग होती है. (I171fa, b/444734264) NavigationEventHistoryStateक्लास के बारे में जानकारी दें. यह नेविगेशन की जानकारी के इतिहास को देखने के लिए मुख्य एपीआई के तौर पर काम करेगा. यह जेस्चर की स्थिति से अलग होगा. (I81ca5, b/444734264)NavigationEventको अब@Immutableके तौर पर मार्क किया गया है. इससे Compose कंपाइलर को, फिर से कंपोज़ करने की प्रोसेस को ऑप्टिमाइज़ करने में मदद मिलती है. (If78c7, b/444734264)navigationevent-composeहैंडलर एपीआई अपडेट कर दिए गए हैं.NavigationEventHandlerऔरNavigationBackHandler(और वैरिएंट) अब एक नए ओवरलोड का इस्तेमाल करते हैं. यह ओवरलोड, ऊपर ले जाए गएNavigationEventStates को स्वीकार करता है. आसान ओवरलोड (currentInfoलेने वाले) को सुरक्षित रखा जाता है. साथ ही, अब वे इस नए स्टेट मॉडल का इस्तेमाल करते हैं. (Ic3251, b/444734264)navigationevent-composeलाइब्रेरी में नया@StableNavigationEventState<T>स्टेट होल्डर जोड़ें. यह ऑब्जेक्ट, लोकल हिस्ट्री को लोकल जेस्चर की स्थिति के साथ जोड़ता है. साथ ही, यहrememberNavigationEventStateऔरNavigationEventHandlerके बीच मुख्य लिंक होगा. (Ifb69f, b/444734264)NavigationEventHandlerमें नई सार्वजनिक, सिर्फ़ पढ़ने के लिए उपलब्धtransitionState: TransitionStateप्रॉपर्टी जोड़ें. अब हैंडलर, ट्रांज़िशन की अपनी स्थिति बनाए रखते हैं. इसे बाहरी सिस्टम देख सकते हैं. (I9acd2, b/444734264)- पेश है नई
TransitionStateसील की गई क्लास. यह जेस्चर की स्थिति को मॉनिटर करने के लिए मुख्य एपीआई के तौर पर काम करेगा. यह नेविगेशन के इतिहास से अलग होगा. (Id4beb, b/444734264) NavigationEventHandlerपरcurrentInfo,backInfo, औरforwardInfoको सार्वजनिक तौर पर, रीड-ओनली प्रॉपर्टी के तौर पर दिखाएं. (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 कंपाइलर को, फिर से कंपोज़ करने की प्रोसेस को ऑप्टिमाइज़ करने में मदद मिलती है. (I7c112)- बैक कंप्लीशन फ़ॉलबैक के लिए मज़ेदार इंटरफ़ेस की मदद से, Java एर्गोनॉमिक्स को बेहतर बनाया गया. (I8a860)
onHasEnabledHandlerChangedका नाम बदलकरonHasEnabledHandlersChangedकर दें. इससे यह पता चलता है कि कॉल बैक की सुविधा चालू करने की स्थिति के बारे में रिपोर्ट, सिर्फ़ एक हैंडलर के लिए नहीं, बल्कि सभी हैंडलर के लिए होती है. (I1af61, b/443711297)NavigationEventDispatcher;सेhasEnabledHandler()हटाएं और इसके बजायNavigationEventInput.onHasEnabledHandlersChangedका इस्तेमाल करें. (Idef72, b/443711297)NavigationEventInputमेंonInfoChangedकॉलबैक जोड़ें, ताकि सुनने वालों को नेविगेशन के इतिहास में हुए बदलावों के बारे में सूचना दी जा सके. इससे मौजूदा, बैक, और फ़ॉरवर्ड स्टैक का पूरा कॉन्टेक्स्ट मिलता है. इससे इनपुट, कॉन्टेक्स्ट के हिसाब से जानकारी पर प्रतिक्रिया दे पाते हैं. (I69a8b, b/443282983)NavigationEventकेswipeEdgeको@IntDefबनाएं (Icee54, b/443950342)- डिसपैचर को एक प्राथमिकता के दायरे में लाने के लिए,
NavigationEventDispatcher.addInputमेंpriorityपैरामीटर जोड़ें.onHasEnabledCallbacksChangedजैसे इवेंट अब सिर्फ़ तब फ़ायर होते हैं, जब उस प्राथमिकता पर कॉलबैक बदलते हैं. (I3e488, b/443711297) NavigationEventDispatcherपैरामीटर का नाम बदलकरparentDispatcherसे पैरंट कर दिया गया है, ताकि इसे आसानी से समझा जा सके. (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
10 सितंबर, 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha08 रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
- लैंबडा पर आधारित
NavigationEventHandlerएपीआई लॉन्च किया गया है. यह फ़्लो पर आधारित हैंडलर की जगह लेगा. फ़्लो इकट्ठा करने के बजाय, सामान्य कॉलबैक के साथ पीछे और आगे के जेस्चर हैंडल करें. इससे छोटे-मोटे बदलावों के साथ बार-बार इस्तेमाल किए जाने वाले लंबे टेक्स्ट कम हो जाते हैं और रद्द करने से जुड़ी समस्याएं नहीं होती हैं.NavigationBackHandlerऔरNavigationForwardHandlerको टारगेट किए गए सुविधा एपीआई के तौर पर उपलब्ध कराएं. फ़्लो पर आधारितNavigationEventHandlerको हटाएं; नए कॉलबैक पर माइग्रेट करें. (I23bac, b/436248277) - इससे, पैसिव लिसनर को 'वापस जाएं' सुविधा की पिछली गतिविधियां ऐक्सेस करने की अनुमति मिलती है. इसके लिए, 'वापस जाएं' सुविधा की जानकारी को एक साथ इस्तेमाल किया जाता है. इससे यूज़र इंटरफ़ेस (यूआई), सबसे ऊपर मौजूद कॉलबैक तक सीमित रहने के बजाय, झलकियां और नेस्ट किए गए नेविगेशन इतिहास को रेंडर कर पाते हैं. (I7a510, b/436248277)
- नेविगेशन की स्थिति को साफ़ तौर पर बताने के लिए, बैक/करंट/फ़ॉरवर्ड मॉडल पेश किया गया है. साथ ही, नेस्ट किए गए हैंडलर के साथ फ़ॉरवर्ड नेविगेशन की सुविधा दी गई है. (Ib86da, b/420443609)
NavigationEventCallbackमेंonForward*तरीके औरisForwardEnabledजोड़ें. (Ic100f, b/436248290)NavigationEventInputमें आगे बढ़ने के लिए नेविगेशन की सुविधा जोड़ी गई. (I5734b)
एपीआई में हुए बदलाव
TestNavigationEventCallbackका इस्तेमाल करके, फ़ॉरवर्ड नेविगेशन इवेंट की टेस्टिंग चालू करें.isForwardEnabledऔरonForward*हुक का इस्तेमाल करें. (I21fb5, b/420443609)NavEventमें,onEvent*कॉलबैक का नाम बदलकरonBack*करें. (I228b3, b/436248290)SwipeEdgeको इनलाइन क्लास में बदलें. (Id5e01)navigationeventलाइब्रेरी को Java के साथ इंटरोऑपरेबल बनाएं. अब सभी पब्लिक एपीआई को Java कोड से पूरी तरह से ऐक्सेस किया जा सकता है. इससे, अलग-अलग भाषाओं या सिर्फ़ Java वाले प्रोजेक्ट में आसानी से इंटिग्रेट किया जा सकता है. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294)- एपीआई की भूमिकाओं के बारे में ज़्यादा जानकारी देने के लिए,
NavigationEventCallbackका नाम बदलकरNavigationEventHandlerकर दिया गया है. इस बदलाव से, मल्टी-स्टेज नेविगेशन के जेस्चर को हैंडल करने के लिए क्लास के मकसद के बारे में बेहतर तरीके से पता चलता है. इसके हिसाब से,addCallbackतरीका अबaddHandlerहै. (I2492a, b/443040331)
गड़बड़ियां ठीक की गईं
- फ़ॉरवर्ड नेविगेशन पर बैक फ़ॉलबैक को चलने से रोकता है. (I74814, b/436248290)
- आगे बढ़ने पर झलक दिखाने की सुविधा जोड़ी गई.
NavigationEventअब एपीआई, पीछे और आगे जाने के लिए किए जाने वाले जेस्चर, दोनों को हैंडल करते हैं. इससे नेविगेशन की दोनों दिशाओं के लिए एक जैसे ऐनिमेशन चालू किए जा सकते हैं. (Idc98c, b/436248290) - बच्चे के
NavigationEventDispatcherOwnerको हटाने पर, फिर से कंपोज़ करने के दौरानIllegalStateExceptionक्रैश होने से रोकता है. (Iff50c, b/412629020) - पैसिव लिसनर अब बैक बटन की पूरी जानकारी के साथ, नेविगेशन बैक स्टैक को ऐक्सेस कर सकते हैं. इससे यूज़र इंटरफ़ेस (यूआई), सबसे ऊपर मौजूद कॉलबैक तक सीमित रहने के बजाय, झलकियां और नेस्ट किए गए नेविगेशन इतिहास को रेंडर कर सकते हैं. (I7a510, b/436248277)
वर्शन 1.0.0-alpha07
27 अगस्त, 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha07 रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
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)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
13 अगस्त, 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha06 रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
Passive Listeners API
अब किसी भी नेविगेशन होस्ट से कॉन्टेक्स्ट के हिसाब से कस्टम जानकारी पास की जा सकती है. साथ ही, अपने यूज़र इंटरफ़ेस (यूआई) में कहीं से भी जेस्चर की स्थिति में होने वाले बदलावों को पैसिव तरीके से सुना जा सकता है. इससे, पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर और जेस्चर से कंट्रोल होने वाले अन्य नेविगेशन के लिए, कॉन्टेक्स्ट के हिसाब से ऐनिमेशन चालू हो जाते हैं.
इस सुविधा के दो हिस्से हैं:
- जानकारी देना - कस्टम डेटा को ले जाने के लिए,
NavigationEventInfoका इस्तेमाल करें. - इस्तेमाल करने की स्थिति - जेस्चर की प्रोग्रेस और कॉन्टेक्स्ट को देखने के लिए,
dispatcher.state(NavigationEventState) का इस्तेमाल करें.
NavigationEventCallbackअब एक ही कॉल में जेस्चर का कॉन्टेक्स्ट सेट करने के लिए,setInfo(currentInfo, previousInfo)तरीके का इस्तेमाल करता है (I1d5e7, b/424470518).NavigationEventHandlerएक नया ओवरलोड जोड़ता है, जोcurrentInfoऔरpreviousInfoको स्वीकार करता है. इससे यह 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).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 */ }
}
NavigationEventState(I7b196) मेंprogressप्रॉपर्टी जोड़ें. इससे प्रोसेस जारी रहने परlatestEvent.progressवैल्यू मिलती है. प्रोसेस जारी न रहने पर0Fवैल्यू मिलती है:val progress = state.progressNavigationEventDispatcherOwnerकंपोज़ेबल जोड़कर,NavigationEventDispatcherइंस्टेंस को क्रम से बनाया, लिंक किया, और हटाया जा सकता है. इस कुकी का इस्तेमाल, डिसपैचर की चालू स्थिति को डाइनैमिक तरीके से कंट्रोल करने और अपने-आप साफ़ होने की सुविधा को चालू करने के लिए किया जाता है.@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
एपीआई में हुए बदलाव
isPassthroughपैरामीटर कोNavigationEventCallbackसे हटा दिया गया है. (I99028, b/424470518)NavigationEventStateकंस्ट्रक्टर अब इंटरनल हैं. जांच करने के लिए,DirectNavigationEventInputHandlerके ज़रिए स्थिति को अपडेट करें. यह डिफ़ॉल्ट रूप सेIdleपर सेट होती है. स्टेट कोInProgressपर सेट करने के लिए,handleOnStartedयाhandleOnProgressedपर कॉल करें. इसेIdleपर वापस लाने के लिए,handleOnCompletedयाhandleOnCancelledपर कॉल करें.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अबabstractNavigationInputHandlerकी नई सुविधा देता है. (Ib45aa)NavigationEventDispatcherOwnerको बदलकर, माता-पिता के डिसपैचर की ज़रूरत होगी. इसमें आपको रूट डिसपैचर बनाने के लिए,nullको साफ़ तौर पर पास करना होगा. (Ia6f64, b/431534103)
गड़बड़ियां ठीक की गईं
NavigationEventDispatcher.dispose()में कलेक्शन की कॉपी बनाने से बचने की वजह से, बेहतर परफ़ॉर्मेंस मिलती है. (I4ab09)- उस समस्या को ठीक किया गया है जिसकी वजह से, चालू होने की स्थिति में बदलाव होने पर
NavigationEventHandlerसही तरीके से जवाब नहीं देता था. (Ia5268,I19bec, I5be5c, b/431534103)
Docs से जुड़े अपडेट
- KDocs को
NavigationEventके लिए अपडेट किया गया है, ताकि यह बताया जा सके कि यह एक यूनिफ़ाइड इवेंट रैपर के तौर पर काम करता है. साथ ही, अलग-अलग तरह के नेविगेशन (हावभाव, क्लिक) के लिए प्रॉपर्टी के व्यवहार के बारे में ज़्यादा जानकारी दी जा सके. (I91e8d) - Compose के सिस्टम बैक हैंडलिंग एपीआई (
BackHandler,PredictiveBackHandler,NavigationEventHandler) के दस्तावेज़ को अपडेट किया गया है. इसमें खास तौर पर, कॉलबैक के क्रम के बारे में बताया गया है. (I7ab94, )
डिपेंडेंसी अपडेट
NavigationEventअब Compose Runtime 1.9.0-beta03 पर निर्भर करता है. इससेnavigationevent-composeआर्टफ़ैक्ट, सभी केएमपी टारगेट के साथ काम कर पाता है. (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
इसके अलावा, 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)
}
ध्यान दें: हम एक नया NavigationEventDispatcherOwner कंपोज़ेबल पेश करेंगे. यह aosp/3692572 में, Compose यूज़र इंटरफ़ेस (यूआई) के अंदर चाइल्ड डिस्पैचर को अपने-आप मैनेज करता है. हालांकि, यह बदलाव मौजूदा रिलीज़ में शामिल नहीं किया गया है. इसे अगली रिलीज़ में शामिल किया जाएगा.
Navigation Testing Library
navigationevent-testingलाइब्रेरी के लिए टेस्टिंग की खास सुविधाएं देने के लिए,navigationevent-testingमॉड्यूल जोड़ा गया.navigationevent(0e50b6)- जांच के लिए,
TestNavigationEventCallbackनकली यूटिलिटी क्लास जोड़ें. यह कुकी, कॉलबैक के तरीके से किए गए कॉल रिकॉर्ड करती है. साथ ही, पुष्टि करने में मदद करने के लिए, मिले हुएNavigationEventआइटम सेव करती है. (4a0246) - डिफ़ॉल्ट वैल्यू के साथ
NavigationEventइंस्टेंस बनाने के लिए,TestNavigationEventफ़ेक यूटिलिटी फ़ंक्शन जोड़ा गया है. इससे नेविगेशन इवेंट प्रोसेसिंग के लिए यूनिट टेस्ट आसान हो जाती हैं. (3b63f5) - जांच के लिए,
TestNavigationEventDispatcherOwnerनकली यूटिलिटी क्लास जोड़ें. यह फ़ॉलबैक और enabled-state-changed इवेंट की संख्या को ट्रैक करता है, ताकि टेस्ट में इंटरैक्शन की पुष्टि करने में मदद मिल सके. (c8753e)
एपीआई में हुए बदलाव
NavigationEventInputHandlerकोandroidMainसेcommonMainमें ले जाएं, ताकि यह KMP के सामान्य कोड में उपलब्ध हो. इवेंट भेजने के लिए, नईpublic send*विधियां जोड़ी गईं.NavigationEventDispatcherपर डिसपैच फ़ंक्शन कोpublicसेinternalमें बदलें. अब उपयोगकर्ताओं को इवेंट भेजने के लिए,NavigationEventInputHandlerका इस्तेमाल करना होगा. (Ia7114)NavigationInputHandlerका नाम बदलकरOnBackInvokedInputHandlerकर दें. (I63405)
गड़बड़ियां ठीक की गईं
NavigationEventDispatcherको फिर से फ़ैक्टर किया गया है, ताकि इंटरमीडिएट लिस्ट के असाइनमेंट से बचा जा सके और कॉल बैक डिस्पैच की परफ़ॉर्मेंस को बेहतर बनाया जा सके. इससे ओवरहेड कम हो जाएगा. (I82702, I1a9d9)NavigationEventमेंtouchX,touchY, औरprogressफ़ील्ड में@FloatRangeएनोटेशन जोड़ें, ताकि कंपाइल टाइम पर वैल्यू की मान्य रेंज लागू की जा सके और एपीआई की सुरक्षा को बेहतर बनाया जा सके. (Iac0ec)
वर्शन 1.0.0-alpha04
2 जुलाई, 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
implementedInJetBrainsForkका इस्तेमाल करकेnavigationevent-composeकिया गया है. साथ ही, कंपोज़ करने के नियमों के मुताबिकcommonStubsटारगेट जोड़ा गया है. JetBrains ने बदलाव का अनुरोध किया है. (f60c79)- सही स्टब जनरेट करने के लिए, Kotlin/Native के लिए Compose कंपाइलर प्लगिन का इस्तेमाल किया गया. इससे सार्वजनिक एपीआई या उनके व्यवहार पर कोई असर नहीं पड़ेगा. (1890c9)
वर्शन 1.0.0-alpha03
18 जून, 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03 रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
navigationeventलाइब्रेरी में Jetpack Compose की सुविधाओं को इस्तेमाल करने के लिए, एक नयाnavigationevent-composeमॉड्यूल जोड़ा गया है. (980d78)NavigationEventकंपोज़ में,LocalNavigationEventDispatcherOwnerलोकल कंपोज़िशन की नई सुविधा जोड़ी गई है. यह एक नल वैल्यू दिखाता है, ताकि यह बेहतर तरीके से तय किया जा सके कि यह मौजूदा कंपोज़िशन में उपलब्ध है या नहीं. अगर मालिकाना हक रखने वाला व्यक्ति नहीं मिलता है, तो अबNavigationEventHandlerगड़बड़ी का मैसेज दिखाएगा. (62ffda)NavigationEventकंपोज़ ने (पीछे जाने पर झलक दिखाने की सुविधा) इवेंट को हैंडल करने के लिए, नया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
}
}
एपीआई में हुए बदलाव
- अब हर
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 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
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लाइब्रेरी, सिस्टम बैक के साथ-साथ पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर को मैनेज करने के लिए, KMP-first API उपलब्ध कराती है.NavigationEventDispatcher, एक सामान्य एपीआई के तौर पर काम करता है. इसका इस्तेमाल, सिस्टम बैक इवेंट पाने के लिए एक या उससे ज़्यादाNavigationEventCallbackइंस्टेंस रजिस्टर करने के लिए किया जाता है.- यह लेयर,
androidx.activityमें पहले रिलीज़ किए गए एपीआई के नीचे मौजूद होती है. इसका मकसद, ज़्यादा लेवल वाले कॉम्पोनेंट में Activity API का इस्तेमाल करने या Android फ़्रेमवर्कOnBackInvokedDispatcherAPI का सीधे तौर पर इस्तेमाल करने के लिए, कम राय वाला विकल्प उपलब्ध कराना है. Activity 1.12.0-alpha01 के तहत,androidx.activityएपीआई को Navigation Event API के आधार पर फिर से लिखा गया है.