Moduli e provider
Indichi a Hilt come creare le dipendenze.
Moduli e provider è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 4 lezioni in totale.
Indicare a Hilt come creare gli oggetti
Hilt può costruire automaticamente una classe se il suo costruttore è annotato con @Inject. Per le interfacce o i tipi che non possiede, invece, deve indicare a Hilt come procedere tramite un Module.
Constructor injection
Il caso più semplice: annoti il costruttore e Hilt saprà come costruire la classe.
class Analytics @Inject constructor(
private val api: ApiService
)Quando la constructor injection non basta
Non può annotare il costruttore di:
- Un'interfaccia (non ha un costruttore).
- Una classe proveniente da una libreria (ad esempio Retrofit o Room).
Per questi casi serve un module.
Definire un module
Un @Module indica a Hilt come fornire i tipi. @InstallIn dichiara a quale componente (scope) appartiene.
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule@Provides per i tipi di libreria
Usi @Provides su una funzione che crea e restituisce la dipendenza. Hilt la chiama quando quel tipo è necessario.
@Provides
@Singleton
fun provideRetrofit(): Retrofit =
Retrofit.Builder()
.baseUrl("https://api.example.com/")
.build()I provider possono dipendere l'uno dall'altro
Una funzione @Provides può accettare parametri; Hilt li fornisce dal grafo.
@Provides
fun provideApi(retrofit: Retrofit): ApiService =
retrofit.create(ApiService::class.java)@Binds per le interfacce
Per associare un'interfaccia a un'implementazione, usi @Binds in un module abstract. È più efficiente di @Provides per le associazioni semplici.
@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModule {
@Binds
abstract fun bindRepo(
impl: NetworkUserRepository
): UserRepository
}@Provides o @Binds
- @Binds — quando deve solo associare un'interfaccia a un'implementazione che usa la constructor injection. Funzione astratta.
- @Provides — quando deve eseguire del codice per creare l'oggetto (ad esempio un builder).
Definire lo scope con @Singleton
Annoti un provider con uno scope come @Singleton affinché Hilt riutilizzi una sola istanza per l'intera app invece di crearne una nuova ogni volta.
Associare lo scope al componente
Lo scope deve corrispondere al componente: @Singleton con SingletonComponent, @ActivityScoped con ActivityComponent e così via.
Riepilogo dei module
@Module+@InstallIndefinisce dove risiedono le associazioni.@Providescrea tipi di libreria o complessi.@Bindsassocia le interfacce alle implementazioni.
Verifica rapida
Verifichi la Sua comprensione di module e provider.
Riepilogo
Ha imparato:
- La constructor injection funziona quando la classe è di propria competenza.
@Module+@InstallInindica a Hilt come fornire altri tipi.@Providescrea oggetti di libreria o complessi;@Bindsassocia le interfacce.- Associare gli scope, come
@Singleton, al relativo componente.
Impara Kotlin con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 36
- Lezioni
- 152
Domande Frequenti
La lezione «Moduli e provider» è gratuita?
Sì — il testo completo di «Moduli e provider» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 4 lezioni in totale.
Cosa imparerò in «Moduli e provider»?
Indichi a Hilt come creare le dipendenze. Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Android Academy?
Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Moduli e provider»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Android Academy?
Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché usare la dependency injection?
- Configurare Hilt
- Moduli e provider
- Eseguire injection nei ViewModel