Module und Provider
Legen Sie für Hilt fest, wie Abhängigkeiten erstellt werden.
Module und Provider ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.
Hilt mitteilen, wie Objekte erstellt werden
Hilt kann eine Klasse automatisch erstellen, wenn ihr Konstruktor mit @Inject annotiert ist. Bei Schnittstellen oder Typen, die Ihnen nicht gehören, müssen Sie Hilt jedoch mithilfe eines Moduls anweisen, wie diese bereitgestellt werden.
Konstruktor-Injection
Der einfachste Fall: Annotieren Sie den Konstruktor, und Hilt weiß, wie die Klasse erstellt wird.
class Analytics @Inject constructor(
private val api: ApiService
)Wann Konstruktor-Injection nicht ausreicht
Sie können den Konstruktor folgender Elemente nicht annotieren:
- Eine Schnittstelle (sie hat keinen Konstruktor).
- Eine Klasse aus einer Bibliothek (z. B. Retrofit oder Room).
Diese benötigen ein Modul.
Ein Modul definieren
Ein @Module teilt Hilt mit, wie Typen bereitgestellt werden. @InstallIn legt fest, zu welcher Komponente (welchem Gültigkeitsbereich) es gehört.
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule@Provides für Bibliothekstypen
Verwenden Sie @Provides für eine Funktion, die die Abhängigkeit erstellt und zurückgibt. Hilt ruft sie auf, wenn dieser Typ benötigt wird.
@Provides
@Singleton
fun provideRetrofit(): Retrofit =
Retrofit.Builder()
.baseUrl("https://api.example.com/")
.build()Provider können voneinander abhängen
Eine @Provides-Funktion kann Parameter entgegennehmen; Hilt stellt sie aus dem Graphen bereit.
@Provides
fun provideApi(retrofit: Retrofit): ApiService =
retrofit.create(ApiService::class.java)@Binds für Schnittstellen
Um eine Schnittstelle an eine Implementierung zu binden, verwenden Sie @Binds in einem abstrakten Modul. Für einfache Bindings ist dies effizienter als @Provides.
@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModule {
@Binds
abstract fun bindRepo(
impl: NetworkUserRepository
): UserRepository
}@Provides oder @Binds?
- @Binds — wenn Sie lediglich eine Schnittstelle einer Implementierung zuordnen, deren Konstruktor per Injection bereitgestellt wird. Abstrakte Funktion.
- @Provides — wenn Sie Code ausführen müssen, um das Objekt zu erstellen (z. B. einen Builder).
Gültigkeitsbereiche mit @Singleton
Annotieren Sie einen Provider mit einem Gültigkeitsbereich wie @Singleton, damit Hilt eine Instanz für die gesamte App wiederverwendet, anstatt jedes Mal eine neue zu erstellen.
Gültigkeitsbereich an Komponente anpassen
Der Gültigkeitsbereich muss zur Komponente passen: @Singleton mit SingletonComponent, @ActivityScoped mit ActivityComponent und so weiter.
Zusammenfassung der Module
@Module+@InstallInlegt fest, wo Bindings gültig sind.@Provideserstellt Bibliotheks- oder komplexe Typen.@Bindsordnet Schnittstellen Implementierungen zu.
Kurzer Test
Testen Sie Ihr Verständnis von Modulen und Providern.
Rückblick
Sie haben gelernt:
- Konstruktor-Injection funktioniert, wenn Ihnen die Klasse gehört.
@Module+@InstallInweist Hilt an, andere Typen bereitzustellen.@Provideserstellt Bibliotheks- oder komplexe Objekte;@Bindsordnet Schnittstellen Implementierungen zu.- Passen Sie Gültigkeitsbereiche wie
@Singletonan die jeweilige Komponente an.
Häufig gestellte Fragen
Ist die Lektion „Module und Provider“ kostenlos?
Ja — der vollständige Text von „Module und Provider“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Module und Provider“?
Legen Sie für Hilt fest, wie Abhängigkeiten erstellt werden. Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Android Academy zu starten?
Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Module und Provider“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?
Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Warum Dependency Injection?
- Hilt einrichten
- Module und Provider
- In ViewModels injizieren