यूज़र इंटरफ़ेस (यूआई) स्टेट प्रोडक्शन (व्यू)

सिद्धांत और Jetpack Compose को लागू करना

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

इवेंट

राज्य

ये कुछ समय के लिए होते हैं, इनका अनुमान नहीं लगाया जा सकता, और ये एक तय समय के लिए ही मौजूद होते हैं.

हमेशा मौजूद रहता है.

राज्य के प्रोडक्शन के इनपुट.

राज्य के प्रोडक्शन का आउटपुट.

यूज़र इंटरफ़ेस (यूआई) या अन्य स्रोतों से मिला डेटा.

इसका इस्तेमाल यूज़र इंटरफ़ेस (यूआई) करता है.

इवेंट यहां से आ सकते हैं:

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

स्टेट प्रोडक्शन एपीआई

स्टेट प्रोडक्शन में दो मुख्य एपीआई इस्तेमाल किए जाते हैं. ये इस बात पर निर्भर करते हैं कि आप पाइपलाइन के किस चरण में हैं:

पाइपलाइन स्टेज

एपीआई

इनपुट

आपको एसिंक्रोनस एपीआई का इस्तेमाल करना चाहिए, ताकि यूज़र इंटरफ़ेस (यूआई) थ्रेड से बाहर काम किया जा सके. इससे यूज़र इंटरफ़ेस (यूआई) में रुकावट नहीं आएगी. उदाहरण के लिए, Kotlin में कोरूटीन या फ़्लो और Java प्रोग्रामिंग लैंग्वेज में RxJava या कॉलबैक.

आउटपुट

आपको ऑब्ज़र्वेबल डेटा होल्डर एपीआई का इस्तेमाल करना चाहिए, ताकि स्थिति बदलने पर यूज़र इंटरफ़ेस (यूआई) को अमान्य किया जा सके और उसे फिर से रेंडर किया जा सके. उदाहरण के लिए, StateFlow या LiveData. Observable डेटा होल्डर यह पक्का करते हैं कि यूज़र इंटरफ़ेस (यूआई) के पास हमेशा स्क्रीन पर दिखाने के लिए यूज़र इंटरफ़ेस (यूआई) की स्थिति हो

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

स्टेट प्रोडक्शन पाइपलाइन असेंबली

अगले सेक्शन में, अलग-अलग इनपुट के लिए सबसे सही स्टेट प्रोडक्शन तकनीक और उनसे मेल खाने वाले आउटपुट एपीआई के बारे में बताया गया है. हर स्टेट प्रोडक्शन पाइपलाइन, इनपुट और आउटपुट का कॉम्बिनेशन होती है. साथ ही, यह इस तरह की होनी चाहिए:

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

स्टेट प्रॉडक्शन पाइपलाइन में आउटपुट टाइप

यूज़र इंटरफ़ेस (यूआई) की स्थिति के लिए आउटपुट एपीआई का चुनाव और उसे दिखाने का तरीका, काफ़ी हद तक उस एपीआई पर निर्भर करता है जिसका इस्तेमाल आपका ऐप्लिकेशन यूज़र इंटरफ़ेस (यूआई) को रेंडर करने के लिए करता है. Android ऐप्लिकेशन में, Views या Jetpack Compose का इस्तेमाल किया जा सकता है. इन बातों का ध्यान रखें:

यहां दी गई टेबल में, Views फ़्रेमवर्क का इस्तेमाल करते समय, स्टेट प्रोडक्शन पाइपलाइन के लिए इस्तेमाल किए जाने वाले एपीआई के बारे में खास जानकारी दी गई है:

इनपुट

आउटपुट

एक बार इस्तेमाल किए जाने वाले एपीआई

StateFlow या LiveData

स्ट्रीमिंग एपीआई

StateFlow या LiveData

एक बार में डेटा ट्रांसफ़र करने वाले और स्ट्रीम करने वाले एपीआई

StateFlow या LiveData