Android Academy · leksjon

Injisere i ViewModel-er

Bruk @HiltViewModel for ryddig injeksjon.

Leksjon 4 av 413 trinn

Injisere i ViewModel-er er en gratis leksjon i Android Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Android Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Android Academy inneholder totalt 4 leksjoner.

Injisere ViewModels med Hilt

ViewModels er spesielle: rammeverket oppretter dem gjennom en factory. Hilt integreres med dette gjennom annotasjonen @HiltViewModel.

Annotere ViewModel

Merk ViewModel med @HiltViewModel, og annoter konstruktøren med @Inject.

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

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

Dette leverer Hilt

Hilt slår opp hver konstruktørparameter i avhengighetsgrafen. Så lenge UserRepository er bundet (via en modul eller konstruktørinjisering), leverer Hilt den automatisk.

Hente den i Compose

Bruk hiltViewModel() inne i en Composable for å hente en ViewModel levert av Hilt.

import androidx.hilt.navigation.compose.hiltViewModel

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

Verten må være et inngangspunkt

For at hiltViewModel() skal fungere, må den hostende Activity-en være annotert med @AndroidEntryPoint. Dette kobler Compose til Hilt-grafen.

@AndroidEntryPoint
class MainActivity : ComponentActivity()

Injisere andre avhengigheter

De kan injisere alt i grafen: repositories, use cases og til og med Room-databasen som leveres av en modul.

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

Injisere applikasjonskontekst

Trenger De en kontekst? Injiser den kvalifiserte applikasjonskonteksten med @ApplicationContext.

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

SavedStateHandle

Hilt leverer automatisk SavedStateHandle, som inneholder navigasjonsargumenter og overlever at prosessen avsluttes.

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

Hele koblingen

Fra ende til ende: Modulen leverer repositoryet → Hilt injiserer det i ViewModel → Compose henter ViewModel gjennom hiltViewModel(). Ingen manuelle factory-er noe sted.

Ingen manuell factory-kode

Uten Hilt måtte De skrevet en egendefinert ViewModelProvider.Factory for hver ViewModel som trenger konstruktørargumenter. @HiltViewModel eliminerer alt dette.

Sette sammen hele læringsløypen

De har nå hele den moderne stakken: ViewModel og livssyklusbevisst tilstand, Room-persistens, coroutines og Flow, alt koblet sammen med Hilt DI.

Hurtigsjekk

Test forståelsen Deres av injisering av ViewModels.

Oppsummering

De har lært:

  • @HiltViewModel + en @Inject-konstruktør lar Hilt opprette ViewModels.
  • Hent dem i Compose med hiltViewModel() i en vert som er annotert med @AndroidEntryPoint.
  • Injiser repositories, @ApplicationContext og SavedStateHandle.
  • Manuelle factory-er er ikke nødvendige.
Gratis å komme i gang

Lær deg Kotlin med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
36
Leksjoner
152

Ofte stilte spørsmål

Er leksjonen «Injisere i ViewModel-er» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Android Academy, inkludert «Injisere i ViewModel-er», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Android Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Injisere i ViewModel-er»?

Bruk @HiltViewModel for ryddig injeksjon. Du øver på Android Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Android Academy?

Ingen tidligere erfaring er nødvendig. Android Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Injisere i ViewModel-er»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Android Academy-leksjonen?

Ja. Alle Android Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Hvorfor avhengighetsinjeksjon?
  2. Sette opp Hilt
  3. Moduler og leverandører
  4. Injisere i ViewModel-er
← Tilbake til Android Academy