Android Academy · पाठ

StateFlow और SharedFlow

अपने ऐप से रिएक्टिव स्थिति उपलब्ध कराएँ।

पाठ 4, कुल 4 में से13 चरण

StateFlow और SharedFlow, CoddyKit पर Android Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Android Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Android Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

गर्म Flows

ठंडी Flows के विपरीत, StateFlow और SharedFlow गर्म होती हैं: वे कलेक्टरों से स्वतंत्र रूप से मौजूद रहती हैं और कई कलेक्टरों के बीच साझा की जा सकती हैं।

StateFlow स्थिति धारक है

StateFlow हमेशा एक वर्तमान मान रखता है। नए कलेक्टरों को तुरंत सबसे नया मान मिल जाता है। यह यूआई स्थिति के लिए बिल्कुल उपयुक्त है।

private val _count = MutableStateFlow(0)
val count: StateFlow<Int> = _count.asStateFlow()

StateFlow अपडेट करना

.value को सीधे सेट करें या परमाणु रूप से पढ़ने-बदलने-लिखने के लिए update का उपयोग करें।

_count.value++
// or, atomically:
_count.update { it + 1 }

StateFlow मानों को मिलाता और दोहराव हटाता है

StateFlow केवल सबसे नया मान रखता है (समेकन) और नया मान पुराने के बराबर होने पर उसे जारी नहीं करता। इससे अनावश्यक यूआई अपडेट रुकते हैं।

इवेंट के लिए SharedFlow

SharedFlow में वर्तमान मान होना आवश्यक नहीं है और यह पुराने उत्सर्जनों की कॉन्फ़िगर की गई संख्या को फिर से जारी कर सकता है। यह नेविगेशन या स्नैकबार दिखाने जैसे एक बार होने वाले इवेंट के लिए उपयुक्त है।

private val _events = MutableSharedFlow<String>()
val events: SharedFlow<String> = _events.asSharedFlow()

इवेंट जारी करना

किसी coroutine से SharedFlow में मान जारी करें।

fun onSave() {
    viewModelScope.launch {
        _events.emit("Saved!")
    }
}

इवेंट के लिए StateFlow क्यों नहीं

StateFlow अंतिम मान रखता है, इसलिए दोबारा सदस्य बनने वाला कलेक्टर (रोटेशन के बाद) पुराने इवेंट को फिर प्राप्त करेगा और, उदाहरण के लिए, दो बार नेविगेट करेगा। SharedFlow डिफ़ॉल्ट रूप से दोबारा जारी करने से बचता है।

SharedFlow कॉन्फ़िगर करना

बफ़रिंग और बैक-प्रेशर व्यवहार नियंत्रित करने के लिए replay और extraBufferCapacity को समायोजित करें।

MutableSharedFlow<String>(
    replay = 0,
    extraBufferCapacity = 1
)

ठंडे Flow को StateFlow में बदलना

ठंडे अपस्ट्रीम को ViewModel के स्कोप वाला साझा StateFlow बनाने के लिए stateIn का उपयोग करें।

val uiState = repo.stream()
    .stateIn(
        viewModelScope,
        SharingStarted.WhileSubscribed(5000),
        UiState()
    )

दोनों में से चुनाव करना

  • StateFlow → वर्तमान स्क्रीन की स्थिति (हमेशा एक मान होता है)।
  • SharedFlow → अस्थायी इवेंट (एक बार चलता है)।

दोनों को कलेक्ट करना

Compose में collectAsStateWithLifecycle से StateFlow कलेक्ट करें; SharedFlow इवेंट को एक बार संभालने के लिए उन्हें LaunchedEffect के भीतर कलेक्ट करें।

LaunchedEffect(Unit) {
    vm.events.collect { msg -> showSnackbar(msg) }
}

त्वरित जाँच

StateFlow और SharedFlow की अपनी समझ जाँचें।

पुनरावलोकन

आपने सीखा:

  • StateFlow एक हॉट, कॉन्फ्लेटेड स्थिति-धारक है, जिसमें वर्तमान मान होता है।
  • SharedFlow एक हॉट इवेंट स्ट्रीम है, जिसमें रिप्ले को कॉन्फ़िगर किया जा सकता है।
  • स्थिति के लिए StateFlow और एक-बार होने वाले इवेंट के लिए SharedFlow का उपयोग करें।
  • stateIn कोल्ड फ्लो को StateFlow में बदलता है।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Kotlin सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
36
पाठ
152

अक्सर पूछे जाने वाले प्रश्न

क्या “StateFlow और SharedFlow” पाठ निःशुल्क है?

हाँ — Android Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “StateFlow और SharedFlow” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Android Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“StateFlow और SharedFlow” में मैं क्या सीखूँगा?

अपने ऐप से रिएक्टिव स्थिति उपलब्ध कराएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Android Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Android Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Android Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“StateFlow और SharedFlow” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Android Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Android Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Coroutine की मूल बातें और स्कोप
  2. viewModelScope और Dispatchers
  3. Kotlin Flow की मूल बातें
  4. StateFlow और SharedFlow
← Android Academy पर वापस जाएँ