Modules et fournisseurs
Indiquez à Hilt comment créer les dépendances.
Modules et fournisseurs est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.
Indiquer à Hilt comment construire les objets
Hilt peut construire automatiquement une classe si son constructeur est annoté avec @Inject. En revanche, pour les interfaces ou les types que vous ne contrôlez pas, vous devez indiquer à Hilt comment procéder au moyen d’un Module.
Injection par constructeur
Dans le cas le plus simple, annotez le constructeur et Hilt saura comment construire la classe.
class Analytics @Inject constructor(
private val api: ApiService
)Quand l’injection par constructeur ne suffit pas
Vous ne pouvez pas annoter le constructeur :
- d’une interface (elle n’a pas de constructeur) ;
- d’une classe provenant d’une bibliothèque (par exemple Retrofit ou Room).
Ces cas nécessitent un module.
Définir un module
Un @Module indique à Hilt comment fournir des types. @InstallIn déclare le composant (la portée) auquel il appartient.
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule@Provides pour les types de bibliothèques
Utilisez @Provides sur une fonction qui construit et renvoie la dépendance. Hilt l’appelle lorsque ce type est nécessaire.
@Provides
@Singleton
fun provideRetrofit(): Retrofit =
Retrofit.Builder()
.baseUrl("https://api.example.com/")
.build()Les fournisseurs peuvent dépendre les uns des autres
Une fonction @Provides peut accepter des paramètres ; Hilt les fournit à partir du graphe.
@Provides
fun provideApi(retrofit: Retrofit): ApiService =
retrofit.create(ApiService::class.java)@Binds pour les interfaces
Pour associer une interface à une implémentation, utilisez @Binds dans un module abstrait. Cette solution est plus efficace que @Provides pour une association simple.
@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModule {
@Binds
abstract fun bindRepo(
impl: NetworkUserRepository
): UserRepository
}@Provides ou @Binds
- @Binds — lorsque vous associez simplement une interface à une implémentation dont le constructeur est injectable. Fonction abstraite.
- @Provides — lorsque vous devez exécuter du code pour construire l’objet (par exemple un générateur).
Définir une portée avec @Singleton
Annotez un fournisseur avec une portée telle que @Singleton afin que Hilt réutilise une seule instance pour toute l’application au lieu d’en créer une nouvelle à chaque utilisation.
Faire correspondre la portée au composant
La portée doit correspondre au composant : @Singleton avec SingletonComponent, @ActivityScoped avec ActivityComponent, et ainsi de suite.
Résumé des modules
@Module+@InstallIndéfinissent l’emplacement des associations.@Providesconstruit les types provenant de bibliothèques ou les types complexes.@Bindsassocie les interfaces à leurs implémentations.
Vérification rapide
Vérifiez votre compréhension des modules et des fournisseurs.
Récapitulatif
Vous avez appris que :
- L’injection par constructeur fonctionne lorsque vous contrôlez la classe.
@Module+@InstallInindiquent à Hilt comment fournir les autres types.@Providesconstruit les objets provenant de bibliothèques ou les objets complexes ;@Bindsassocie les interfaces.- Faites correspondre les portées, comme
@Singleton, à leur composant.
Questions Fréquemment Posées
La leçon « Modules et fournisseurs » est-elle gratuite ?
Oui — le texte complet de « Modules et fournisseurs » 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 « Modules et fournisseurs » ?
Indiquez à Hilt comment créer les dépendances. 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 3 sur 4.
Combien de temps prend la leçon « Modules et fournisseurs » ?
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