0Pricing
Android Academy · Lekcja

Moduły i dostawcy

Poinstruuj Hilt, jak tworzyć zależności

Moduły i dostawcy to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.

Informowanie Hilt, jak tworzyć obiekty

Hilt może automatycznie konstruować klasę, jeśli jej konstruktor ma adnotację @Inject. Jednak w przypadku interfejsów lub typów, których nie jesteś właścicielem, musisz poinstruować Hilt za pomocą Module.

Wstrzykiwanie przez konstruktor

Najprostszy przypadek: oznacz konstruktor adnotacją, a Hilt będzie wiedzieć, jak utworzyć obiekt.

class Analytics @Inject constructor(
    private val api: ApiService
)

Kiedy wstrzykiwanie przez konstruktor nie wystarcza

Nie możesz oznaczyć konstruktora adnotacją w przypadku:

  • interfejsu (nie ma konstruktora),
  • klasy pochodzącej z biblioteki (np. Retrofit lub Room).

W tych przypadkach potrzebny jest moduł.

Definiowanie modułu

Adnotacja @Module informuje Hilt, jak dostarczać określone typy. Adnotacja @InstallIn określa komponent (zakres), do którego moduł należy.

import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent

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

@Provides dla typów bibliotecznych

Użyj adnotacji @Provides przy funkcji, która tworzy i zwraca zależność. Hilt wywoła tę funkcję, gdy dany typ będzie potrzebny.

@Provides
@Singleton
fun provideRetrofit(): Retrofit =
    Retrofit.Builder()
        .baseUrl("https://api.example.com/")
        .build()

Dostawcy mogą zależeć od siebie

Funkcja z adnotacją @Provides może przyjmować parametry, które Hilt dostarczy z grafu.

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

@Binds dla interfejsów

Aby powiązać interfejs z implementacją, użyj adnotacji @Binds w abstrakcyjnym module. W przypadku prostego powiązania jest to wydajniejsze niż @Provides.

@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModule {
    @Binds
    abstract fun bindRepo(
        impl: NetworkUserRepository
    ): UserRepository
}

@Provides a @Binds

  • @Binds — gdy wystarczy powiązać interfejs z implementacją, która korzysta ze wstrzykiwania przez konstruktor. Funkcja abstrakcyjna.
  • @Provides — gdy trzeba wykonać kod tworzący obiekt (np. użyć buildera).

Określanie zakresu za pomocą @Singleton

Oznacz dostawcę zakresem, takim jak @Singleton, aby Hilt ponownie wykorzystywał jedną instancję w całej aplikacji, zamiast tworzyć nową przy każdym użyciu.

Dopasowanie zakresu do komponentu

Zakres musi odpowiadać komponentowi: @Singleton do SingletonComponent, @ActivityScoped do ActivityComponent i tak dalej.

Podsumowanie modułów

  • @Module + @InstallIn określają, gdzie znajdują się powiązania.
  • @Provides tworzy typy biblioteczne lub złożone.
  • @Binds mapuje interfejsy na implementacje.

Szybki sprawdzian

Sprawdź swoją wiedzę na temat modułów i dostawców.

Podsumowanie

Dowiedziałeś się, że:

  • Wstrzykiwanie przez konstruktor działa, gdy jesteś właścicielem danej klasy.
  • @Module + @InstallIn informują Hilt, jak dostarczać inne typy.
  • @Provides tworzy obiekty biblioteczne lub złożone, a @Binds mapuje interfejsy.
  • Należy dopasowywać zakresy, takie jak @Singleton, do odpowiednich komponentów.

Często zadawane pytania

Czy lekcja „Moduły i dostawcy” jest bezpłatna?

Tak — pełny tekst „Moduły i dostawcy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Moduły i dostawcy”?

Poinstruuj Hilt, jak tworzyć zależności Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Android Academy?

Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Moduły i dostawcy”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?

Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Dlaczego warto stosować wstrzykiwanie zależności?
  2. Konfigurowanie Hilt
  3. Moduły i dostawcy
  4. Wstrzykiwanie do ViewModel
← Powrót do Android Academy