Scopes और Component Lifetimes
dependencies कितने समय तक जीवित रहें, इसे नियंत्रित कीजिए।
Scopes और Component Lifetimes, CoddyKit पर Jetpack Compose Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Jetpack Compose Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Jetpack Compose Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
दायरा क्या नियंत्रित करता है
दायरा तय करता है कि Hilt किसी एक इंस्टेंस को कितने समय तक जीवित रखेगा और उसे कहाँ साझा किया जाएगा। यह केवल बनाने के बारे में नहीं, बल्कि जीवनकाल के बारे में है।
डिफ़ॉल्ट रूप से बिना दायरे के
किसी दायरा एनोटेशन के बिना, Hilt हर अनुरोध पर एक नया इंस्टेंस बनाता है। सस्ती और स्टेट-रहित वस्तुओं के लिए यह ठीक है।
@Provides
fun provideMapper(): Mapper = Mapper() // fresh each timeकंपोनेंट Android की संरचना के अनुरूप होते हैं
Hilt ऐसे कंपोनेंट उपलब्ध कराता है जो पूरे ऐप से लेकर किसी एक view तक Android के जीवनकाल से मेल खाते हैं। हर कंपोनेंट अपने इंस्टेंस का स्वामी होता है।
Singleton के साथ पूरे ऐप में
SingletonComponent ऐप के जीवनकाल तक रहता है। @Singleton वाली बाइंडिंग एक बार बनाई जाती हैं और हर स्क्रीन में साझा की जाती हैं।
@InstallIn(SingletonComponent::class)प्रति-Activity जीवनकाल
ActivityComponent एक Activity का अनुसरण करता है। उस Activity में इंस्टेंस साझा करने और नई Activity पर उसे फिर से बनाने के लिए @ActivityScoped का उपयोग करें।
@ActivityScoped
class FormState @Inject constructor()ViewModel का दायरा
ViewModelComponent ViewModel के जीवनकाल से मेल खाता है। @ViewModelScoped के साथ कोई डिपेंडेंसी केवल उसी एक ViewModel के भीतर साझा की जाती है।
@ViewModelScoped
class SessionCache @Inject constructor()दायरा = एनोटेशन और कंपोनेंट
हर दायरा एनोटेशन एक कंपोनेंट से जुड़ा होता है। @Singleton, SingletonComponent के साथ; @ActivityScoped, ActivityComponent के साथ; और इसी तरह आगे।
जीवनकाल एक पदानुक्रम बनाते हैं
कंपोनेंट एक-दूसरे के अंदर होते हैं: Activity ऐप के अंदर रहती है और Fragment Activity के अंदर। कोई child अपने parent द्वारा उपलब्ध कराई गई हर चीज़ का उपयोग कर सकता है।
सावधानी से दायरा निर्धारित करें
दायरा निर्धारित करने में मेमोरी खर्च होती है, क्योंकि कंपोनेंट समाप्त होने तक इंस्टेंस रखा जाता है। केवल उन्हीं वस्तुओं का दायरा निर्धारित करें जिनका स्टेट वास्तव में साझा करना आवश्यक हो।
बड़े दायरे को लीक करने से बचें
किसी छोटे जीवनकाल वाली वस्तु, जैसे Activity, को कभी Singleton में इंजेक्ट न करें। लंबे समय तक रहने वाला holder उसे जीवित रखेगा और मेमोरी लीक होगी। ⚠️
सही दायरा चुनना
दायरे को डेटा के जीवनकाल से मिलाएँ: ऐप का कॉन्फ़िगरेशन Singleton में और स्क्रीन का स्टेट ViewModelScoped में रखें। सही चुनाव लीक और अनावश्यक खर्च रोकता है।
त्वरित जाँच
आप पूरे ऐप के जीवनकाल के लिए एक साझा इंस्टेंस चाहते हैं। कौन-सा दायरा सही रहेगा?
पुनरावलोकन: जीवनकाल नियंत्रण में
आपने सीखा कि दायरे किसी इंस्टेंस के जीवनकाल को एक कंपोनेंट से जोड़ते हैं—Singleton से लेकर ViewModel तक—ताकि डिपेंडेंसी उतने ही समय तक जीवित रहें जितनी आवश्यकता हो। 🎯
एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “Scopes और Component Lifetimes” पाठ निःशुल्क है?
हाँ—“Scopes और Component Lifetimes” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Jetpack Compose Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Jetpack Compose Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Scopes और Component Lifetimes” में मैं क्या सीखूँगा?
dependencies कितने समय तक जीवित रहें, इसे नियंत्रित कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Jetpack Compose Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Jetpack Compose Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Jetpack Compose Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“Scopes और Component Lifetimes” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Jetpack Compose Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Jetpack Compose Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- DI क्यों: Testable, Decoupled Code
- Modules, @Provides और @Binds
- hiltViewModel और @HiltViewModel
- Scopes और Component Lifetimes