navigationevent

  
Navigation Event लाइब्रेरी, सिस्टम बैक के साथ-साथ Predictive Back को मैनेज करने के लिए, KMP-first API उपलब्ध कराती है.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
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.history StateFlow लॉन्च किया गया है. इस नॉन-जेनेरिक फ़्लो की मदद से, ऑब्ज़र्वर सिर्फ़ नेविगेशन स्टैक में हुए बदलावों की सदस्यता ले सकते हैं. साथ ही, यह फ़्लो जेस्चर के दौरान भी स्थिर रहता है. यह transitionState का काउंटरपार्ट है. (I1db10, b/444734264)
  • नया ग्लोबल NavigationEventDispatcher.transitionState StateFlow लॉन्च किया गया है. इस नॉन-जेनेरिक फ़्लो की मदद से, ऑब्ज़र्वर सिर्फ़ फ़िज़िकल जेस्चर की स्थिति (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 लाइब्रेरी में नया @Stable NavigationEventState<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

अब किसी भी नेविगेशन होस्ट से कॉन्टेक्स्ट के हिसाब से कस्टम जानकारी पास की जा सकती है. साथ ही, अपने यूज़र इंटरफ़ेस (यूआई) में कहीं से भी जेस्चर की स्थिति में होने वाले बदलावों को पैसिव तरीके से सुना जा सकता है. इससे, पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर और जेस्चर से कंट्रोल होने वाले अन्य नेविगेशन के लिए, कॉन्टेक्स्ट के हिसाब से ऐनिमेशन चालू हो जाते हैं.

इस सुविधा के दो हिस्से हैं:

  1. जानकारी देना - कस्टम डेटा को ले जाने के लिए, NavigationEventInfo का इस्तेमाल करें.
  2. इस्तेमाल करने की स्थिति - जेस्चर की प्रोग्रेस और कॉन्टेक्स्ट को देखने के लिए, 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.progress
    
  • NavigationEventDispatcherOwner कंपोज़ेबल जोड़कर, 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 अब abstract NavigationInputHandler की नई सुविधा देता है. (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 फ़्रेमवर्क OnBackInvokedDispatcher API का सीधे तौर पर इस्तेमाल करने के लिए, कम राय वाला विकल्प उपलब्ध कराना है. Activity 1.12.0-alpha01 के तहत, androidx.activity एपीआई को Navigation Event API के आधार पर फिर से लिखा गया है.