navigationevent

  
Navigation Event लाइब्रेरी, सिस्टम बैक के साथ-साथ Predictive Back को हैंडल करने के लिए, KMP-first API उपलब्ध कराती है.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
10 सितंबर, 2025 - - - 1.0.0-alpha08

डिपेंडेंसी का एलान करना

navigationevent पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

Groovy

dependencies {
    implementation "androidx.navigationevent:navigationevent:1.0.0-alpha08"
}

Kotlin

dependencies {
    implementation("androidx.navigationevent:navigationevent:1.0.0-alpha08")
}

डिपेंडेंसी के बारे में ज़्यादा जानने के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

सुझाव/राय दें या शिकायत करें

आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.

नई समस्या दर्ज करने का तरीका

ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.

इस आर्टफ़ैक्ट के लिए कोई रिलीज़ नोट नहीं है.

वर्शन 1.0

वर्शन 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)
  • NavigationEventInput.onHasEnabledCallbacksChanged में @EmptySuper जोड़ें. (If9853)
  • NavigationEventInputHandler में onAttach लागू करें. (I03648)
  • NavigationEventInputHandler में onDetach लागू करें. (I03648)
  • डिफ़ॉल्ट रूप से, NavigationEventCallback को चालू किया जाता है. (Ic0188)
  • NavigationEventInput.addOnHasEnabledCallbacksChangedCallback को NavigationEventInput.onHasEnabledCallbacksChanged से बदलें. (I64e93)
  • NavigationEventDispatcher.addInput के लिए मुख्य थ्रेड की ज़रूरत होती है. (Ic2930)
  • NavigationEventDispatcher.removeInput के लिए मुख्य थ्रेड की ज़रूरत होती है. (Ic2930)
  • Dispatcher.addOnHasEnabledCallbacksChangedCallback को हटाएं. Dispatcher.onHasEnabledCallbacksChanged से बदलें. (Ida3e3, b/436530096)

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जिसमें पहले से अटैच किए गए हैंडलर को जोड़ने या अटैच नहीं किए गए हैंडलर को हटाने पर, लाइफ़साइकल की गलत लॉजिक ट्रिगर होती थी. (I9e47b)

वर्शन 1.0.0-alpha06

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 API (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 UI के अंदर चाइल्ड डिस्पैचर को अपने-आप मैनेज करता है. हालांकि, यह बदलाव मौजूदा रिलीज़ में शामिल नहीं किया गया है. इसे अगली रिलीज़ में शामिल किया जाएगा.

Navigation Testing Library

  • navigationevent-testing लाइब्रेरी के लिए, टेस्टिंग की खास सुविधाएं देने वाला navigationevent-testing मॉड्यूल जोड़ा गया.navigationevent (0e50b6)
  • जांच के लिए, TestNavigationEventCallback नकली यूटिलिटी क्लास जोड़ें. यह कुकी, कॉलबैक के तरीके से किए गए कॉल रिकॉर्ड करती है. साथ ही, पुष्टि करने के लिए मिले NavigationEvent आइटम सेव करती है. (4a0246)
  • डिफ़ॉल्ट वैल्यू के साथ NavigationEvent इंस्टेंस बनाने के लिए, TestNavigationEvent फ़ेक यूटिलिटी फ़ंक्शन जोड़ा गया है. इससे नेविगेशन इवेंट प्रोसेसिंग के लिए यूनिट टेस्ट आसान हो जाती हैं. (3b63f5)
  • जांच के लिए, TestNavigationEventDispatcherOwner नकली यूटिलिटी क्लास जोड़ें. यह फ़ॉलबैक और चालू स्थिति में बदलाव वाले इवेंट की संख्या को ट्रैक करता है, ताकि टेस्ट में इंटरैक्शन की पुष्टि की जा सके. (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 में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • navigationevent-compose के लिए implementedInJetBrainsFork का इस्तेमाल किया गया और कंपोज़ के नियमों के मुताबिक 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 Compose ने एक नई LocalNavigationEventDispatcherOwner लोकल कंपोज़िशन जोड़ी है. यह एक ऐसी वैल्यू दिखाता है जो शून्य हो सकती है, ताकि यह बेहतर तरीके से तय किया जा सके कि यह मौजूदा कंपोज़िशन में उपलब्ध है या नहीं. अगर मालिक का खाता नहीं मिलता है, तो अब NavigationEventHandler गड़बड़ी का मैसेज दिखाएगा. (62ffda)
  • NavigationEvent Compose में, (अनुमानित बैक जेस्चर) इवेंट को हैंडल करने के लिए, नया 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 से अलग है. 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-फ़र्स्ट एपीआई उपलब्ध कराती है. NavigationEventDispatcher, एक या उससे ज़्यादा NavigationEventCallback इंस्टेंस को रजिस्टर करने के लिए एक सामान्य एपीआई के तौर पर काम करता है, ताकि सिस्टम बैक इवेंट मिल सकें.
  • यह लेयर, androidx.activity में पहले रिलीज़ किए गए एपीआई के नीचे मौजूद होती है. इसका मकसद, ज़्यादा लेवल वाले कॉम्पोनेंट में Activity API का इस्तेमाल करने या Android फ़्रेमवर्क OnBackInvokedDispatcher API का सीधे तौर पर इस्तेमाल करने के लिए, कम राय देने वाला विकल्प उपलब्ध कराना है. Activity 1.12.0-alpha01 के तहत, androidx.activity एपीआई को नेविगेशन इवेंट एपीआई के आधार पर फिर से लिखा गया है.