Android Academy · पाठ

ViewModel में इंजेक्शन करना

स्वच्छ इंजेक्शन के लिए @HiltViewModel का उपयोग करें।

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

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

Hilt के साथ ViewModels इंजेक्ट करना

ViewModels विशेष होते हैं: फ़्रेमवर्क उन्हें फ़ैक्टरी के माध्यम से इंस्टैंशिएट करता है। Hilt @HiltViewModel एनोटेशन के ज़रिए इसके साथ एकीकृत होता है।

ViewModel पर एनोटेशन लगाना

ViewModel पर @HiltViewModel लगाएं और उसके कंस्ट्रक्टर पर @Inject एनोटेशन लगाएं।

import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class UserViewModel @Inject constructor(
    private val repo: UserRepository
) : ViewModel()

Hilt क्या उपलब्ध कराता है

Hilt प्रत्येक कंस्ट्रक्टर पैरामीटर को डिपेंडेंसी ग्राफ़ में खोजता है। जब तक UserRepository बाउंड है (मॉड्यूल या कंस्ट्रक्टर इंजेक्शन के माध्यम से), Hilt उसे स्वचालित रूप से उपलब्ध कराता है।

Compose में इसे प्राप्त करना

Hilt द्वारा उपलब्ध कराए गए ViewModel को प्राप्त करने के लिए किसी Composable के अंदर hiltViewModel() का उपयोग करें।

import androidx.hilt.navigation.compose.hiltViewModel

@Composable
fun UserScreen(
    vm: UserViewModel = hiltViewModel()
) {
    val state by vm.uiState
        .collectAsStateWithLifecycle()
}

होस्ट का एंट्री पॉइंट होना आवश्यक है

hiltViewModel() के काम करने के लिए होस्टिंग Activity पर @AndroidEntryPoint एनोटेशन लगा होना चाहिए। इससे Compose Hilt ग्राफ़ से जुड़ता है।

@AndroidEntryPoint
class MainActivity : ComponentActivity()

अन्य डिपेंडेंसीज़ इंजेक्ट करना

आप ग्राफ़ में मौजूद किसी भी चीज़ को इंजेक्ट कर सकते हैं: रिपॉज़िटरी, उपयोग-मामले, यहाँ तक कि मॉड्यूल द्वारा उपलब्ध कराया गया Room डेटाबेस भी।

@HiltViewModel
class HomeViewModel @Inject constructor(
    private val getUsers: GetUsersUseCase,
    private val analytics: Analytics
) : ViewModel()

Application Context इंजेक्ट करना

क्या आपको context चाहिए? योग्य ऐप्लिकेशन context को @ApplicationContext के साथ इंजेक्ट करें।

@HiltViewModel
class PrefsViewModel @Inject constructor(
    @ApplicationContext private val context: Context
) : ViewModel()

SavedStateHandle

Hilt स्वचालित रूप से SavedStateHandle उपलब्ध कराता है, जो नेविगेशन आर्ग्युमेंट्स रखता है और प्रक्रिया समाप्त होने के बाद भी सुरक्षित रहता है।

@HiltViewModel
class DetailViewModel @Inject constructor(
    handle: SavedStateHandle
) : ViewModel() {
    val id: Int = handle.get<Int>("id") ?: 0
}

पूरा जोड़ने का प्रवाह

शुरू से अंत तक: Module रिपॉज़िटरी उपलब्ध कराता है → Hilt उसे ViewModel में इंजेक्ट करता है → Compose hiltViewModel() के माध्यम से ViewModel प्राप्त करता है। कहीं भी मैन्युअल फ़ैक्टरी की आवश्यकता नहीं होती।

मैन्युअल फ़ैक्टरी कोड नहीं

Hilt के बिना आपको कंस्ट्रक्टर आर्ग्युमेंट्स वाले प्रत्येक ViewModel के लिए कस्टम ViewModelProvider.Factory लिखनी पड़ती। @HiltViewModel यह सब समाप्त कर देता है।

पूरे ट्रैक को एक साथ जोड़ना

अब आपके पास पूरा आधुनिक स्टैक है: ViewModel और लाइफ़साइकल-जागरूक स्थिति, Room पर्सिस्टेंस, कोरूटीन और Flow—सब Hilt DI के साथ जुड़े हुए।

त्वरित जाँच

ViewModels इंजेक्ट करने की अपनी समझ जाँचें।

पुनरावलोकन

आपने सीखा:

  • @HiltViewModel और @Inject वाला कंस्ट्रक्टर Hilt को ViewModels बनाने देता है।
  • उन्हें Compose में किसी @AndroidEntryPoint होस्ट के अंदर hiltViewModel() से प्राप्त करें।
  • रिपॉज़िटरी, @ApplicationContext और SavedStateHandle इंजेक्ट करें।
  • मैन्युअल फ़ैक्टरी की आवश्यकता नहीं है।
शुरुआत निःशुल्क

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

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

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

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

क्या “ViewModel में इंजेक्शन करना” पाठ निःशुल्क है?

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

“ViewModel में इंजेक्शन करना” में मैं क्या सीखूँगा?

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

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

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

“ViewModel में इंजेक्शन करना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. निर्भरता इंजेक्शन क्यों
  2. Hilt सेट करना
  3. मॉड्यूल और प्रोवाइडर
  4. ViewModel में इंजेक्शन करना
← Android Academy पर वापस जाएँ