Injecter dans les ViewModels
Utilisez @HiltViewModel pour une injection claire.
Injecter dans les ViewModels est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.
Injecter des ViewModels avec Hilt
Les ViewModels sont particuliers : le framework les instancie par l’intermédiaire d’une fabrique. Hilt s’intègre à ce mécanisme grâce à l’annotation @HiltViewModel.
Annoter le ViewModel
Marquez le ViewModel avec @HiltViewModel et annotez son constructeur avec @Inject.
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@HiltViewModel
class UserViewModel @Inject constructor(
private val repo: UserRepository
) : ViewModel()Ce que Hilt fournit
Hilt recherche chaque paramètre du constructeur dans le graphe de dépendances. Tant que UserRepository est associé (par un module ou par injection du constructeur), Hilt le fournit automatiquement.
Le récupérer dans Compose
Utilisez hiltViewModel() dans un composable pour obtenir un ViewModel fourni par Hilt.
import androidx.hilt.navigation.compose.hiltViewModel
@Composable
fun UserScreen(
vm: UserViewModel = hiltViewModel()
) {
val state by vm.uiState
.collectAsStateWithLifecycle()
}L’hôte doit être un point d’entrée
Pour que hiltViewModel() fonctionne, l’Activity hôte doit être annotée avec @AndroidEntryPoint. Cela relie Compose au graphe Hilt.
@AndroidEntryPoint
class MainActivity : ComponentActivity()Injecter d’autres dépendances
Vous pouvez injecter n’importe quel élément présent dans le graphe : des dépôts, des cas d’utilisation, voire la base de données Room fournie par un module.
@HiltViewModel
class HomeViewModel @Inject constructor(
private val getUsers: GetUsersUseCase,
private val analytics: Analytics
) : ViewModel()Injecter le contexte de l’application
Vous avez besoin d’un contexte ? Injectez le contexte qualifié de l’application avec @ApplicationContext.
@HiltViewModel
class PrefsViewModel @Inject constructor(
@ApplicationContext private val context: Context
) : ViewModel()SavedStateHandle
Hilt fournit automatiquement SavedStateHandle, qui transporte les arguments de navigation et survit à la mort du processus.
@HiltViewModel
class DetailViewModel @Inject constructor(
handle: SavedStateHandle
) : ViewModel() {
val id: Int = handle.get<Int>("id") ?: 0
}Le câblage complet
De bout en bout : le module fournit le dépôt → Hilt l’injecte dans le ViewModel → Compose obtient le ViewModel via hiltViewModel(). Aucune fabrique manuelle n’est nécessaire.
Aucun code de fabrique manuel
Sans Hilt, vous devriez écrire une fabrique personnalisée ViewModelProvider.Factory pour chaque ViewModel nécessitant des arguments de constructeur. @HiltViewModel élimine tout ce code.
Assembler tout le parcours
Vous disposez maintenant de toute la pile moderne : ViewModel et état adapté au cycle de vie, persistance Room, coroutines et Flow, le tout relié avec Hilt DI.
Vérification rapide
Vérifiez votre compréhension de l’injection des ViewModels.
Récapitulatif
Vous avez appris que :
- Un constructeur
@HiltViewModel+@Injectpermet à Hilt de construire les ViewModels. - Dans Compose, récupérez-les avec
hiltViewModel()au sein d’un hôte@AndroidEntryPoint. - Injectez les dépôts,
@ApplicationContextetSavedStateHandle. - Aucune fabrique manuelle n’est nécessaire.
Questions Fréquemment Posées
La leçon « Injecter dans les ViewModels » est-elle gratuite ?
Oui — le texte complet de « Injecter dans les ViewModels » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Injecter dans les ViewModels » ?
Utilisez @HiltViewModel pour une injection claire. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Android Academy ?
Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Injecter dans les ViewModels » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?
Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi l'injection de dépendances ?
- Configurer Hilt
- Modules et fournisseurs
- Injecter dans les ViewModels