Jetpack Compose Academy · Oppitunti

Moduulit, @Provides ja @Binds

Määrittäkää Hiltille, miten tyypit rakennetaan.

Oppitunti 2/413 vaihetta

Moduulit, @Provides ja @Binds on ilmainen Jetpack Compose Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Jetpack Compose Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Jetpack Compose Academy-kurssilla on yhteensä 4 oppituntia.

Kun konstruktorin injektointi ei riitä

Et voi lisätä @Inject-annotaatiota konstruktorille, jota et omista, kuten Retrofit- tai OkHttp-oliolle. Hilt tarvitsee toisen tavan oppiakseen, miten nämä luodaan.

Tutustu moduleihin

Moduuli on luokka, joka opettaa Hiltille, miten luodaan tyyppejä, joita se ei pysty rakentamaan itse. Rekisteröi moduuli merkitsemällä se @Module-annotaatiolla.

@Module
object NetworkModule { }

Asenna komponenttiin

Jokainen moduuli ilmoittaa sijaintinsa @InstallIn-annotaatiolla. SingletonComponent tekee sen sidonnat saataville koko sovelluksessa koko prosessin ajaksi.

@Module
@InstallIn(SingletonComponent::class)
object NetworkModule

Tarjoa tyyppi @Provides-annotaatiolla

@Provides merkitsee funktion, jonka palauttamaa arvoa Hilt käyttää riippuvuutena. Funktion runko näyttää tarkasti, miten olio rakennetaan.

@Provides
fun provideApi(): ApiService = Retrofit.Builder().build().create(ApiService::class.java)

Provides voi ottaa parametreja

@Provides-funktio voi pyytää muita riippuvuuksia parametreina. Hilt tarjoaa ne ensin ja suorittaa sitten funktion, joka kokoaa tuloksen.

@Provides
fun provideRepo(api: ApiService): Repo = Repo(api)

Sido rajapinnat @Binds-annotaatiolla

Kun tarvitset vain rajapinnan yhdistämisen toteutukseen, @Binds on kevyempi kuin @Provides. Se kertoo Hiltille, mikä luokka toteuttaa rajapinnan.

@Binds
abstract fun bindRepo(impl: RepoImpl): Repo

@Binds tarvitsee abstraktin moduulin

Koska @Binds-metodit ovat abstrakteja, niiden moduulin on oltava abstrakti luokka eikä objekti. Toteutuksen on oltava jo injektoitavissa.

@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModule

Provides vai Binds

Käytä @Binds-annotaatiota yksinkertaiseen rajapinnan ja luokan yhdistämiseen ja @Provides-annotaatiota, kun olion rakentaminen vaatii koodin suorittamista. Binds tuottaa vähemmän koodia.

Merkitse singletonit

Lisää palveluntarjoajalle @Singleton, jotta Hilt luo olion kerran ja käyttää sitä uudelleen. Tämä sopii erinomaisesti raskaille asiakasolioille, kuten jaetulle OkHttp-instanssille.

@Provides
@Singleton
fun provideClient(): OkHttpClient = OkHttpClient()

Erota toisistaan kvalifioijilla

Jos kaksi palveluntarjoajaa palauttaa saman tyypin, @Qualifier-annotaatio erottaa ne toisistaan. Tällöin Hilt tietää, minkä sidonnan kukin injektiokohta tarvitsee.

@Qualifier
annotation class AuthClient

Moduulit rakentavat graafin

Yhdessä moduulit muodostavat riippuvuusgraafin. Hilt lukee ne käännösaikana ja kytkee jokaisen tyypin yhteen tarkistettuun puuhun.

Pikatarkistus

Sinun on sidottava Repo-rajapinta sen ainoaan RepoImpl-luokkaan. Mikä vaihtoehto on kevyin?

Kertaus: Hiltin opettaminen rakentamaan

Näit, että moduulit opettavat Hiltille, miten luodaan tyyppejä, joita se ei pysty rakentamaan itse. @Provides on tarkoitettu koodia vaativiin tapauksiin ja @Binds rajapintojen yhdistämiseen. 🧩

Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Moduulit, @Provides ja @Binds” ilmainen?

Kyllä – oppitunnin ”Moduulit, @Provides ja @Binds” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Jetpack Compose Academy-kurssin, päivitä CoddyKit PROhon. Jetpack Compose Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Moduulit, @Provides ja @Binds”?

Määrittäkää Hiltille, miten tyypit rakennetaan. Harjoittelet Jetpack Compose Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Jetpack Compose Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Jetpack Compose Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Moduulit, @Provides ja @Binds”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Jetpack Compose Academy-oppitunnilla?

Kyllä. Jokainen Jetpack Compose Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Miksi DI: testattava ja irtikytketty koodi
  2. Moduulit, @Provides ja @Binds
  3. hiltViewModel ja @HiltViewModel
  4. Rajaukset ja komponenttien elinkaaret
← Takaisin: Jetpack Compose Academy