नेविगेशन 3

Navigation 3, नेविगेशन की नई लाइब्रेरी है. इसे Compose के साथ काम करने के लिए डिज़ाइन किया गया है. Navigation 3 की मदद से, पिछली गतिविधियों को पूरी तरह से कंट्रोल किया जा सकता है. साथ ही, किसी सूची में आइटम जोड़कर और हटाकर, डेस्टिनेशन पर जाया जा सकता है और वहां से वापस आया जा सकता है. यह एक फ़्लेक्सिबल ऐप्लिकेशन नेविगेशन सिस्टम बनाता है. इसके लिए, यह इन सुविधाओं का इस्तेमाल करता है:

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

बड़े लेवल पर, Navigation 3 को इन तरीकों से लागू किया जा सकता है:

  1. उस कॉन्टेंट के बारे में बताएं जिसे उपयोगकर्ता आपके ऐप्लिकेशन में ऐक्सेस कर सकते हैं. हर कॉन्टेंट के लिए एक यूनीक कुंजी तय करें. साथ ही, उस कुंजी को कॉन्टेंट से जोड़ने के लिए एक फ़ंक्शन जोड़ें. कॉन्टेंट के लिए कुंजियां ठीक करना लेख पढ़ें.
  2. एक बैक स्टैक बनाएं, जिसमें कुंजियां पुश की जाती हैं और जब उपयोगकर्ता आपके ऐप्लिकेशन पर नेविगेट करते हैं, तो उन्हें हटाया जाता है. बैक स्टैक बनाना लेख पढ़ें.
  3. अपने ऐप्लिकेशन की पिछली गतिविधियां दिखाने के लिए, NavDisplay का इस्तेमाल करें. जब भी बैक स्टैक में बदलाव होता है, तो यह यूज़र इंटरफ़ेस (यूआई) को अपडेट करता है, ताकि काम का कॉन्टेंट दिखाया जा सके. पिछली गतिविधियां दिखाना लेख पढ़ें.
  4. ज़रूरत के हिसाब से, NavDisplay के सीन की रणनीतियों में बदलाव करें, ताकि अडैप्टिव लेआउट और अलग-अलग प्लैटफ़ॉर्म के साथ काम किया जा सके.
  5. सीधे डेस्टिनेशन पर जाने के लिए, डीप लिंक की सुविधा उपलब्ध है.

AOSP पर, Navigation 3 का पूरा सोर्स कोड देखा जा सकता है.

Jetpack Navigation में किए गए सुधार

Navigation 3, ओरिजनल Jetpack Navigation API से इन मामलों में बेहतर है:

  • Compose के साथ आसानी से इंटिग्रेट किया जा सकता है
  • इससे आपको बैक स्टैक का पूरा कंट्रोल मिलता है
  • इससे ऐसे लेआउट बनाए जा सकते हैं जो बैक स्टैक से एक साथ एक से ज़्यादा डेस्टिनेशन पढ़ सकते हैं. इससे उन्हें विंडो के साइज़ और अन्य इनपुट में होने वाले बदलावों के हिसाब से खुद को अडजस्ट करने में मदद मिलती है.

Navigation 3 के सिद्धांतों और एपीआई डिज़ाइन के विकल्पों के बारे में ज़्यादा जानने के लिए, सूचना वाली ब्लॉग पोस्ट पढ़ें.

कोड सैंपल

रेसिपी रिपॉज़िटरी में, नेविगेशन से जुड़ी सामान्य समस्याओं को हल करने के लिए, नेविगेशन 3 के बिल्डिंग ब्लॉक इस्तेमाल करने के उदाहरण दिए गए हैं.