Eseguire injection nei ViewModel
Utilizzi @HiltViewModel per un'injection ordinata.
Eseguire injection nei ViewModel è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 4 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.
Iniettare ViewModel con Hilt
I ViewModel sono speciali: il framework li istanzia tramite una factory. Hilt si integra con questo meccanismo tramite l'annotazione @HiltViewModel.
Annotare il ViewModel
Contrassegni il ViewModel con @HiltViewModel e annoti il suo costruttore con @Inject.
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@HiltViewModel
class UserViewModel @Inject constructor(
private val repo: UserRepository
) : ViewModel()Cosa fornisce Hilt
Hilt cerca ogni parametro del costruttore nel grafo delle dipendenze. Finché UserRepository è associato (tramite un module o la constructor injection), Hilt lo fornisce automaticamente.
Recuperarlo in Compose
Usi hiltViewModel() all'interno di un Composable per ottenere un ViewModel fornito da Hilt.
import androidx.hilt.navigation.compose.hiltViewModel
@Composable
fun UserScreen(
vm: UserViewModel = hiltViewModel()
) {
val state by vm.uiState
.collectAsStateWithLifecycle()
}L'host deve essere un punto di ingresso
Perché hiltViewModel() funzioni, l'Activity che lo ospita deve essere annotata con @AndroidEntryPoint. In questo modo Compose viene collegato al grafo Hilt.
@AndroidEntryPoint
class MainActivity : ComponentActivity()Iniettare altre dipendenze
Può iniettare qualsiasi elemento presente nel grafo: repository, use case e persino il database Room fornito da un module.
@HiltViewModel
class HomeViewModel @Inject constructor(
private val getUsers: GetUsersUseCase,
private val analytics: Analytics
) : ViewModel()Iniettare il context dell'application
Le serve un context? Inietti il context qualificato dell'application con @ApplicationContext.
@HiltViewModel
class PrefsViewModel @Inject constructor(
@ApplicationContext private val context: Context
) : ViewModel()SavedStateHandle
Hilt fornisce automaticamente SavedStateHandle, che contiene gli argomenti di navigazione e sopravvive alla terminazione del processo.
@HiltViewModel
class DetailViewModel @Inject constructor(
handle: SavedStateHandle
) : ViewModel() {
val id: Int = handle.get<Int>("id") ?: 0
}Il collegamento completo
Dall'inizio alla fine: il module fornisce il repository → Hilt lo inietta nel ViewModel → Compose ottiene il ViewModel tramite hiltViewModel(). Non servono factory manuali.
Niente codice per factory manuali
Senza Hilt dovrebbe scrivere una ViewModelProvider.Factory personalizzata per ogni ViewModel che richiede argomenti nel costruttore. @HiltViewModel elimina tutto questo.
Completare il percorso
Ora dispone dell'intero stack moderno: ViewModel + stato consapevole del ciclo di vita, persistenza con Room, coroutine e Flow, tutto collegato tramite Hilt DI.
Verifica rapida
Verifichi la Sua comprensione dell'injection dei ViewModel.
Riepilogo
Ha imparato:
- Il costruttore con
@HiltViewModel+@Injectpermette a Hilt di creare i ViewModel. - In Compose, li ottenga con
hiltViewModel()all'interno di un host@AndroidEntryPoint. - Inietti repository,
@ApplicationContexteSavedStateHandle. - Non servono factory manuali.
Domande Frequenti
La lezione «Eseguire injection nei ViewModel» è gratuita?
Sì — il testo completo di «Eseguire injection nei ViewModel» è 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 «Eseguire injection nei ViewModel»?
Utilizzi @HiltViewModel per un'injection ordinata. 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 4 di 4.
Quanto tempo richiede la lezione «Eseguire injection nei ViewModel»?
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