टेंप्लेट की पाबंदियां

होस्ट, किसी टास्क के लिए ज़्यादा से ज़्यादा पांच टेंप्लेट दिखा सकता है. इनमें से आखिरी टेंप्लेट, इनमें से किसी एक तरह का होना चाहिए:

ध्यान दें कि यह सीमा, टेंप्लेट की संख्या पर लागू होती है. यह स्टैक में मौजूद Screen इंस्टेंस की संख्या पर लागू नहीं होती. उदाहरण के लिए, अगर कोई ऐप्लिकेशन स्क्रीन A पर दो टेंप्लेट भेजता है और फिर स्क्रीन B को पुश करता है, तो अब वह तीन और टेंप्लेट भेज सकता है.

इसके अलावा, अगर हर स्क्रीन को एक टेंप्लेट भेजने के लिए स्ट्रक्चर किया गया है, तो ऐप्लिकेशन, ScreenManager स्टैक पर पांच स्क्रीन इंस्टेंस पुश कर सकता है.

इन पाबंदियों के कुछ खास मामले हैं: टेंप्लेट रीफ़्रेश करना, वापस जाना, और रीसेट करना.

टेंप्लेट रीफ़्रेश होते हैं

कॉन्टेंट के कुछ अपडेट को, टेंप्लेट की सीमा में नहीं गिना जाता. आम तौर पर, अगर कोई ऐप्लिकेशन एक नया टेंप्लेट पुश करता है, जो उसी तरह का है और जिसमें पिछले टेंप्लेट जैसा ही मुख्य कॉन्टेंट है, तो नए टेंप्लेट को कोटे में नहीं गिना जाता. उदाहरण के लिए, ListTemplate में किसी लाइन की टॉगल स्थिति को अपडेट करने पर, कोटा में कोई बदलाव नहीं होता. अलग-अलग टेंप्लेट के दस्तावेज़ देखें. इससे आपको इस बारे में ज़्यादा जानकारी मिलेगी कि किस तरह के कॉन्टेंट अपडेट को रीफ़्रेश माना जा सकता है.

बैक ऑपरेशन

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

उदाहरण के लिए, अगर ऐप्लिकेशन, स्क्रीन A पर दो टेंप्लेट भेजता है. इसके बाद, स्क्रीन B पर दो और टेंप्लेट भेजता है, तो ऐप्लिकेशन के पास एक कोटा बचा है. अगर इसके बाद, ऐप्लिकेशन वापस स्क्रीन A पर आ जाता है, तो होस्ट कोटा को तीन पर रीसेट कर देता है. ऐसा इसलिए, क्योंकि ऐप्लिकेशन दो टेंप्लेट पीछे चला गया है.

ध्यान दें कि किसी स्क्रीन पर वापस जाने के दौरान, ऐप्लिकेशन को ऐसा टेंप्लेट भेजना होगा जो उस स्क्रीन से भेजे गए आखिरी टेंप्लेट के जैसा हो. किसी अन्य तरह का टेंप्लेट भेजने पर गड़बड़ी होती है. हालांकि, जब तक बैक ऑपरेशन के दौरान टाइप एक जैसा रहता है, तब तक ऐप्लिकेशन, कोटे पर असर डाले बिना टेंप्लेट के कॉन्टेंट में बदलाव कर सकता है.

कार्रवाइयां रीसेट करना

कुछ टेंप्लेट में खास सिमैंटिक होते हैं, जिनसे टास्क के खत्म होने का पता चलता है. उदाहरण के लिए, NavigationTemplate एक ऐसा व्यू है जो स्क्रीन पर दिखता रहता है. साथ ही, उपयोगकर्ता के लिए बारी-बारी से दिए जाने वाले नए निर्देशों के साथ रीफ़्रेश होता रहता है.

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

अगर होस्ट को सूचना से की गई कार्रवाई या लॉन्चर से ऐप्लिकेशन शुरू करने का अनुरोध मिलता है, तो कोटा भी रीसेट हो जाता है. इस सुविधा की मदद से, कोई ऐप्लिकेशन सूचनाओं से नया टास्क फ़्लो शुरू कर सकता है. यह सुविधा तब भी काम करती है, जब कोई ऐप्लिकेशन पहले से ही बाइंड हो और फ़ोरग्राउंड में हो.