Moduulit ja providerit
Kertokaa Hiltille, miten riippuvuudet luodaan.
Moduulit ja providerit on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 4 oppituntia.
Kertokaa Hiltille, miten objektit rakennetaan
Hilt voi rakentaa luokan automaattisesti, jos sen konstruktorissa on annotaatio @Inject. Rajapintojen tai tyyppien kohdalla, joita ette omista, Hiltille on kuitenkin annettava ohjeet Modulen avulla.
Konstruktorin kautta injektointi
Yksinkertaisin tapaus: merkitkää konstruktori annotaatiolla, jolloin Hilt tietää, miten luokka rakennetaan.
class Analytics @Inject constructor(
private val api: ApiService
)Kun konstruktorin kautta injektointi ei riitä
Ette voi lisätä annotaatiota seuraavien luokkien konstruktoriin:
- Rajapinta (sillä ei ole konstruktoria).
- Kirjastosta peräisin oleva luokka (esimerkiksi Retrofit tai Room).
Nämä tarvitsevat Modulen.
Modulen määrittäminen
@Module kertoo Hiltille, miten tyypit tarjotaan. @InstallIn ilmoittaa, mihin komponenttiin (rajaukseen) Module kuuluu.
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule@Provides kirjastotyypeille
Käyttäkää @Provides-annotaatiota funktiossa, joka rakentaa ja palauttaa riippuvuuden. Hilt kutsuu sitä, kun kyseistä tyyppiä tarvitaan.
@Provides
@Singleton
fun provideRetrofit(): Retrofit =
Retrofit.Builder()
.baseUrl("https://api.example.com/")
.build()Providerit voivat riippua toisistaan
@Provides-funktio voi ottaa parametreja, jotka Hilt tarjoaa graafista.
@Provides
fun provideApi(retrofit: Retrofit): ApiService =
retrofit.create(ApiService::class.java)@Binds rajapinnoille
Voitte sitoa rajapinnan toteutukseen käyttämällä @Binds-annotaatiota abstraktissa Modulessa. Yksinkertaisessa sidonnassa se on tehokkaampi kuin @Provides.
@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModule {
@Binds
abstract fun bindRepo(
impl: NetworkUserRepository
): UserRepository
}@Provides vai @Binds
- @Binds — kun vain yhdistätte rajapinnan konstruktorin kautta injektoitavaan toteutukseen. Abstrakti funktio.
- @Provides — kun objektin rakentaminen edellyttää koodin suorittamista (esimerkiksi builderia).
Rajaus @Singleton-annotaatiolla
Lisätkää providerille rajaus, kuten @Singleton, jotta Hilt käyttää samaa instanssia koko sovelluksessa uuden luomisen sijaan.
Rajauksen sovittaminen komponenttiin
Rajauksen on vastattava komponenttia: @Singleton kuuluu SingletonComponentiin, @ActivityScoped ActivityComponentiin ja niin edelleen.
Modulen yhteenveto
@Module+@InstallInmäärittää, missä sidonnat ovat käytettävissä.@Providesrakentaa kirjasto- ja monimutkaiset tyypit.@Bindsyhdistää rajapinnat toteutuksiin.
Pikatarkistus
Testatkaa, miten hyvin ymmärrätte Moduleja ja providereita.
Kertaus
Opitte seuraavat asiat:
- Konstruktorin kautta injektointi toimii, kun omistatte luokan.
@Module+@InstallInopastaa Hiltia tarjoamaan muita tyyppejä.@Providesrakentaa kirjasto- ja monimutkaiset objektit;@Bindsyhdistää rajapinnat toteutuksiin.- Sovittakaa esimerkiksi
@Singleton-rajaukset niitä vastaaviin komponentteihin.
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
- 36
- Oppitunnit
- 152
Usein kysytyt kysymykset
Onko oppitunti ”Moduulit ja providerit” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Moduulit ja providerit”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Moduulit ja providerit”?
Kertokaa Hiltille, miten riippuvuudet luodaan. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Moduulit ja providerit”-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ä Android Academy-oppitunnilla?
Kyllä. Jokainen Android 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
- Miksi riippuvuusinjektiota käytetään?
- Hiltin käyttöönotto
- Moduulit ja providerit
- Injektio ViewModeleihin