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+@InstallInokreślają, gdzie znajdują się powiązania.@Providestworzy typy biblioteczne lub złożone.@Bindsmapuje 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+@InstallIninformują Hilt, jak dostarczać inne typy.@Providestworzy obiekty biblioteczne lub złożone, a@Bindsmapuje 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
- Dlaczego warto stosować wstrzykiwanie zależności?
- Konfigurowanie Hilt
- Moduły i dostawcy
- Wstrzykiwanie do ViewModel