Dependency Injection auf Android mit Hilt | Joe Rakhimov | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Dependency Injection auf Android mit Hilt

teacher avatar Joe Rakhimov

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Willkommen

      0:47

    • 2.

      Beispiel

      1:45

    • 3.

      Abhängigkeit

      1:22

    • 4.

      Dependency

      2:28

    • 5.

      Service

      2:11

    • 6.

      Dolch und Hilt

      1:01

    • 7.

      Code

      0:57

    • 8.

      Ohne Dependency

      3:02

    • 9.

      Mit Dependency Injection

      2:41

    • 10.

      Hilt Workflow

      1:52

    • 11.

      ViewModel

      1:31

    • 12.

      Bindungen

      2:34

    • 13.

      Singleton

      1:08

    • 14.

      KONTEXT

      1:07

    • 15.

      Benannt

      1:21

    • 16.

      Qualifier

      0:57

    • 17.

      Komponente

      3:13

    • 18.

      Vielen Dank

      0:38

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

15

Teilnehmer:innen

--

Projekte

Über diesen Kurs

Fragst du dich, was Abhängigkeit und Dependency Injection ist, warum du dependency in deinem Projekt brauchst und wie du sie mit Hold umsetzt? Dann bist du hier genau richtig und dieser Kurs ist für dich.

In diesem Kurs lernst du:

  • Was Abhängigkeit und Dependency Injection sind

  • wie man Dependency Injection mit Hilt implementiert

  • verschiedene Merkmale der Hilt Bibliothek

Dependency Injection ist eine wichtige Technik zur Erstellung von Code:

  • Besser wartbar

  • Avoid vermeiden

  • Lebenszyklusmanagement verbessern

  • Besser testbar

  • Besser lesbar

Hilt ist eine Dependency Injection die auf Dagger aufgebaut ist und hilft, Dependency Injection ohne viel boilerplate zu implementieren.

Am Ende des Kurses wirst du in der Lage sein:

  • die Hilt Bibliothek im Android Studio-Projekt einrichten

  • ein Modul zu erstellen um Abhängigkeiten bereitzustellen

  • Abhängigkeiten mit @Provide Annotation bereitstellen

  • Bind Abhängigkeiten mit @Binds Annotation

  • inject mit @Inject

  • Integriere Hilt in ViewModel

  • die gleiche Instanz mit @Singleton Annotation zu versehen

  • Kontext mit Hilt einspritzen

  • Instanzen der gleichen Typen mit @Named und @Qualifier Annotations bereitstellen

Die Implementierung von Dependency Injection wird am Beispiel einer einfachen weather demonstriert. Nach diesem Kurs wirst du in der Lage sein, Dependency Injection mit Hilt in deinem Android Studio-Projekt zu implementieren.

Triff deine:n Kursleiter:in

Teacher Profile Image

Joe Rakhimov

Kursleiter:in

Skills dieses Kurses

Android Entwicklung Mobile Entwicklung
Level: All Levels

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Willkommen: Willkommen zum Kurs Dependency Injection auf Android mit Health. Mein Name ist Garrett oder Hue. Ich entwickle seit 2013 Android-Anwendungen. In diesem Kurs lernen Sie, was Abhängigkeit ist, warum sie ein Problem sein kann und wie Sie dieses Problem mithilfe der Abhängigkeitsinjektion lösen können. Sie werden lernen, wie Sie die Dependency Injection mithilfe einer Bibliothek namens Hilt implementieren . Außerdem werden wir mit Hilt eine einfache Wettervorhersageanwendung erstellen . Um an diesem Kurs teilnehmen zu können, sollten Sie mit der Android-Entwicklung vertraut sein. Wir werden die Programmiersprache Kotlin verwenden. Ebenfalls. Sie sollten Android Studio auf Ihrem Computer installiert haben. Wenn du bereit bist, lass uns den Kurs beginnen. 2. Beispiel: Beginnen wir den Kurs mit einem kurzen Beispiel für Abhängigkeit und Abhängigkeitsinjektion. Hier werde ich ein Beispiel für Abhängigkeit zeigen. Das ist die Motorklasse. Es hat eine Startfunktion, die den Motor zum Starten bringt. Und wir haben die Fahrzeugklasse, die eine Instanz des Motors erstellt. Und es hat eine Startfunktion, die anzeigt, dass das Auto startet und der Motor startet. Außerdem haben wir eine Hauptfunktion, in der wir eine Instanz des Autos erstellen und loslegen. Das Problem ist, dass wir hier, in dieser Linie, Instanzen des Motors im Auto erzeugen. In diesem Fall ist Engine Abhängigkeit. Das Auto ist auf Motorglas angewiesen. Wie können wir dieses Problem lösen? Es kann gelöst werden. Wenn wir eine Instanz außerhalb der abhängigen Instanz erstellen, verschieben wir sie zur Hauptfunktion und übergeben eine Instanz an das Auto. Jetzt analysieren wir die Instanz-Engine mithilfe ihres Konstruktors in das Auto. Dies wird als Dependency Injection bezeichnet. Lassen Sie uns diesen Code ausführen und das Ergebnis sehen. Der Code funktioniert. Und das war ein kurzes Beispiel dafür, was Abhängigkeit und Abhängigkeitsinjektion sind. 3. Abhängigkeit: In diesem Video werden wir sehen, was Abhängigkeit ist. Abhängigkeit tritt auf , wenn eine Komponente von einer anderen Komponente abhängt. Beispielsweise hängt eine Klasse von einer anderen Klasse ab. In diesem Beispiel erstellen wir Instanzen des Motors im Auto. Das Auto hängt also vom Motor ab. In diesem Fall ist Car abhängig, Antigen ist Abhängigkeit. Sie können sagen, welche Probleme mit der Abhängigkeit auftreten können. Das erste Problem wird Replikation genannt. Wir erstellen eine Instanz-Engine im Auto. Daher müssen wir möglicherweise an vielen Stellen solche Instanzen erstellen. Dies führt zu einer Code-Replikation. Ein weiteres Problem ist die Wartbarkeit. Stellen Sie sich die Situation vor, Motoren Funktionsketten konstruieren. Also müssen wir den Code überall ändern , wo wir Instanzen der Engine erstellen. Ein weiteres Problem ist das Lifecycle Management. Hier erstellen wir Exemplare des Motors im Auto. Das bedeutet, dass beim Entfernen des Autos auch der Motor entfernt wird. Diese Probleme können durch die Verwendung von Dependency Injection gelöst werden . 4. Dependency Injection: In diesem Video werden wir sehen, was Abhängigkeitsinjektion ist. Dependency Injection ist das Erstellen und Injizieren von Abhängigkeit. In diesem Beispiel erstellen wir eine Instanz der Engine in Hauptfunktion und übergeben Konstruktorfunktion für zwei Autos. Und das nennt man Dependency Injection. Die Dependency Injection löst Abhängigkeitsprobleme. Es ist eine Quellcode-Replikation, indem Abhängigkeiten an einem Ort erstellt werden. In diesem Beispiel erstellen wir Instanzen von Engine in Hauptfunktion und übergeben sie in das Autoobjekt. Wenn wir seine Konstruktorfunktion ändern müssen, müssen wir den Code an einer Stelle ändern. Das verbessert also die Wartbarkeit des Codes. Dependency Injection löst das Problem mit Lifecycle Management. Hier erstellen wir Instanzen des Motors und des vorbeifahrenden Fahrzeugobjekts. Wenn das Auto also entfernt wird und nicht entfernt wird, haben wir die Kontrolle über den Lebenszyklus. Es gibt drei Arten der Abhängigkeitsinjektion Konstruktor-, Feld - und Methodeninjektion. Wie wir im vorherigen Beispiel gesehen haben, wird eine Abhängigkeit erstellt und an die Konstruktorfunktion übergeben. Dies wird als Konstruktorinjektion bezeichnet. Dieser Typ wird bevorzugt, da wir die Abhängigkeit privat machen können , um sie unveränderlich zu machen. Ein anderer Typ ist die gefüllte Injektion. In diesem Fall injizieren wir Abhängigkeit in das Feld. Diese Art der Injektion wird verwendet, wenn der Konstruktor nicht verfügbar ist. Beispiel ist das Android-System. Wir haben keine Kontrolle über Android-Komponenten wie Aktivität, Fragment usw. Ein anderer Typ ist die Methodeninjektion. Diese Art der Injektion wird verwendet , wenn wir keine Kontrolle über den Konstruktor haben. Und wir wollen mehrere Abhängigkeiten gleichzeitig einfügen. 5. Service Locator: In diesem Video werden wir über Service Locator sprechen. Es gibt zwei Möglichkeiten, das Abhängigkeitsproblem zu lösen. Der erste Weg ist die Abhängigkeitsinjektion, bei der Abhängigkeiten in abhängige injiziert werden. Um die Abhängigkeitsinjektion zu implementieren, können wir die Healed Library verwenden. Eine andere Möglichkeit, das Abhängigkeitsproblem zu lösen , ist die Abhängigkeitssuche, bei der Abhängigkeiten von außen abgerufen werden. Sogenannter Service Locator , der Abhängigkeiten mit ihrem Namen zurückgibt. Lassen Sie mich ein Beispiel für den Service Locator zeigen. Hier haben wir einen Glasmotor mit Funktion Stern, der die Druckmaschine startet. Hier haben wir ein Objekt namens Service Locator, das eine Instanz von Engine und Funktion erstellt, die Abhängigkeiten mit ihrem Namen zurückgibt. ZB gibt es eine Instanz der Engine zurück , wenn der Name zwei Engines entspricht. Wenn der Name nicht gefunden wird, wird eine ungültige Argumentausnahme mit Nachrichtenabhängigkeit ausgelöst bei der der folgende Schlüssel in der Fahrzeugklasse nicht gefunden wurde. Die Instanz der Engine wird mithilfe der Suchfunktion mit dem Engine-Schlüssel aus dem Service Locator abgerufen . Dann zeigt die Startfunktion an, dass das Auto startet und startet den Motor. In der Hauptfunktion erstellen wir eine Instanz der Engine und nennen sie die Startfunktion. Service Locator ist ein entworfenes Muster , das den Zugriff auf das Objekt anhand seines Namens ermöglicht. Es ermöglicht, Objekte an einem Ort zu erstellen und sie anhand ihrer Namen zu ermitteln. Es löst das Abhängigkeitsproblem indem es eine Instanz an einem Ort erstellt. Es gibt also keine Code-Anwendung. Es erzeugt auch Abhängigkeit von außen. Eine Änderung der Abhängigkeit führt also nicht zu einer Änderung der Abhängigkeit. Darüber hinaus ist der Lebenszyklus der Abhängigkeit nicht an den Lebenszyklus der Angehörigen gebunden. Service Locator wird von einer Bibliothek namens Coin verwendet, die nicht in diesem Kurs behandelt wird. 6. Dolch und Hilt: Dagger and a Dagger ist eine Dependency Injection Library, die die Implementierung der Dependency Injection erleichtert. Es reduziert eine Menge Boilerplate-Code und implementiert gleichzeitig die Dependency Injection. Q ist auch eine Dependency Injection Library, die auf Dagger aufbaut und die Verwendung von Dolchen erleichtert. So funktioniert es. Dagger verwendet einen Annotationsprozessor, um den Code zu analysieren und zu identifizieren, wo Abhängigkeiten eingefügt werden sollen und welche Art von Abhängigkeiten erforderlich sind. Dann generiert Dagger Quellcode , der vom Compiler kompiliert wird. Hier ist die Dependency Injection Library, die auf Dagger basiert. Es ermöglicht, weniger Code zu schreiben, da es vordefinierte Container für Android-Klassen hat, was auch das Einfügen von Abhängigkeiten in das Viewmodel und das Injizieren des View-Modells selbst erleichtert . 7. Code: Der Code für diesen Kurs ist unter der folgenden URL verfügbar. Wenn Sie diese URL öffnen, finden Sie das Code-Repository auf GitHub, das Code für eine einfache Wettervorhersageanwendung enthält . Um dieses Repository zu klonen, klicken Sie auf Code, klicken Sie hier um die URL zu kopieren und Android Studio zu öffnen. Klicken Sie in Android Studio auf Datei. Neues Projekt von der Versionskontrolle. Fügen Sie hier die URL ein , die wir kopiert haben. Und hier sollten Sie das Verzeichnis festlegen , in dem Sie das Projekt speichern möchten, und auf Klonen klicken. Nach dem Klonen des Codes können Sie diese Anwendung auf Ihrem Gerät oder Emulator ausführen. 8. Ohne Dependency Injection: In diesem Video werde ich Code ohne Abhängigkeitsinjektion zeigen . Öffnen wir Android Studio. Wir haben bereits Code aus dem Repository geklont. Und jetzt sind wir in Master Branch. Wir müssen keine DI-Filiale auschecken. Dieser Zweig enthält Code ohne Abhängigkeitsinjektion. Öffnen wir zunächst AndroidManifest.xml. Hier können wir sehen, dass es eine Berechtigung für die Internetverbindung hat und Klartext-Verkehr verwendet, um die HTTP-Verbindung verwenden zu können. Und wir haben einen Bildschirm namens Prognoseaktivität. Im Rahmen der Prognoseaktivitäten erstellen wir anhand der Basis-URL Nachrüstungen. Und wir stellen unsere JSON-Konverter-Factory , um JSON-Daten in Objekte zu konvertieren. Am Ende erstellen wir eine Instanz der API-Schnittstelle. In der onCreate-Methode legen wir ein Layout-XML als Inhaltsansicht fest. Lass es uns öffnen. Hier haben wir eine Recycler-Ansicht, um Prognosedaten anzuzeigen. Dann rufen wir die Jet-Prognosemethode auf, um die Wettervorhersage zu erhalten. Bei der Jet-Prognosemethode erstellen wir eine Co-Routine , um Wettervorhersagen abzurufen. Und dann schalten wir zwei Hauptdiensatcher um, um die Wettervorhersage anzuzeigen. Bei der kurzen Prognosemethode legen wir den Ortsnamen als Titel fest und prüfen dann, ob tägliche Prognosedaten verfügbar sind. Wenn es nicht Null ist, stellen wir den Layoutmanager für die Recycler-Ansicht ein. Und dann stellen wir den Prognoseadapter ein. Der Adapter empfängt Prognosedaten und ordnet sie dem Layout zu, bei dem es die Prognose von Listenelementen handelt. Es enthält drei, es dauert zwei Jahre, bis Datum, Temperatur und Zustand angezeigt werden. Im Build wurden Gradle-Dateiabhängigkeiten für Retrofit- und Dishonor-Konverterbibliotheken hinzugefügt. Lassen Sie uns die API-Schnittstelle öffnen. Und es enthält eine Funktion die Prognosen, Reaktionen, Reaktionskampagnen und aktuelle tägliche Standortinformationen für die Prognosedaten zurückgibt Reaktionskampagnen und aktuelle . Lassen Sie uns nun diese Anwendung ausführen und das Ergebnis sehen. Hier sehen Sie die Anwendung, die den Ortsnamen im Titel und Wettervorhersagedaten als Liste anzeigt Ortsnamen im . 9. Mit Dependency Injection: In diesem Video werden wir Code mit Abhängigkeitsinjektion sehen . Im vorherigen Video haben wir Code ohne Abhängigkeitsinjektion gesehen , bei dem wir in der Prognoseaktivität eine API-Instanz erstellen . API ist also Abhängigkeit und die Prognoseaktivität ist abhängig. Wechseln wir nun zum Zweig DI , der Code mit Abhängigkeitsinjektion enthält. Um die Bibliothek von here verwenden zu können, sollte sie dem Projekt hinzugefügt werden. Lassen Sie mich zeigen, wie es hinzugefügt wurde. Öffnen wir zunächst die Build-Gradle-Datei. Hier können wir sehen, dass das Plug-In für die HIV-Bibliothek hinzugefügt wurde. Öffnen wir die Build Gradle-Datei für das App-Modul. Und das Plug-in für seine Bibliothek wurde angewendet. Außerdem müssen wir den Kotlin-Annotationsprozessor hinzufügen , um die Heal-Bibliothek verwenden zu können. wurde sichergestellt, dass das Projekt Java 1.8 verwendet , da Healed dies erfordert. Dann fügen wir eine Abhängigkeit für die Healed-Bibliothek hinzu. Und wir fügen dies hinzu, damit Verweise Code generieren können. Der nächste Schritt besteht darin, eine Klasse namens App zu erstellen, die die Anwendung und die kommentierte geheilte Android-App erweitert . Diese Anmerkung weist Heel an, Code zur Abhängigkeitsinjektion zu generieren. Öffnen Sie AndroidManifest.xml und deklarieren die Anwendung mithilfe des Namensattributs. Innerhalb des IP-Pakets erstellen wir eine Modulklasse, die mit installierten Annotationen und Modulanmerkungen annotiert ist . In diesem Modul erstellen wir eine Funktion, die mit den Anmerkungen „Bereitstellen eines Patienten“ versehen ist und eine API-Instanz bereitstellt , die in die Prognoseaktivität eingefügt wird. Die prognostizierte Aktivität wird mit einem Android-Einstiegspunkt annotiert , um Abhängigkeiten in sie einzufügen. Hier injizieren wir die Instanz eines Typen mit der Inject-Annotation. Wir erstellen es also nicht innerhalb der Prognoseaktivität. Lassen Sie uns nun diesen Code ausführen und das Ergebnis sehen. Hier sehen wir dieselbe Anwendung, aber dieses Mal haben wir Dependency Injection implementiert. 10. Hilt Workflow: In diesem Video werde ich zeigen, wie Gesundheit funktioniert. Beginnen wir mit der AP-Klasse, die die Anwendung erweitert und eine geheilte Android-App-Annotation verwendet. Die Anmerkung weist hier an, Abhängigkeitsinjektionscode einschließlich der Singleton-Komponente zu generieren . Singleton-Komponente ist ein Abhängigkeitscontainer auf Anwendungsebene , der Abhängigkeiten injiziert. In der App Model-Klasse verwenden wir Modulannotationen, um ihm mitzuteilen , dass das App-Modul Abhängigkeiten bereitstellt In der Annotation installiert wird verwendet, um mitzuteilen , zu welcher Komponente das App-Modul Abhängigkeiten bereitstellt. In diesem Fall stellt ein Modul Abhängigkeiten für die Singleton-Komponente bereit, sich um einen Abhängigkeitscontainer auf Anwendungsebene handelt. Das App-Modul bietet Abhängigkeit als API-Instanz mithilfe von Annotationen. Bei der Prognose von Aktivitäten wird die Android-Einstiegsannotation verwendet, um eine Aktivitätskomponente zu erstellen, die der Singleton-Komponente untergeordnet ist. Das bedeutet also, dass die Aktivitätskomponente für die Prognoseaktivität Zugriff auf Abhängigkeiten zur Singleton-Komponente hat . Mithilfe der Inject-Annotation können wir eine API-Instanz injizieren. Der gesamte Workflow sieht so aus, als ob dieses App-Modul eine API-Instanz für die Singleton-Komponente bereitstellt. Aktivitätskomponente der Prognoseaktivität hat Zugriff auf Abhängigkeiten zwischen einzelnen Komponenten und fügt Abhängigkeitsinstanz der API mithilfe der Inject-Annotation ein. 11. ViewModel: In diesem Video werde ich zeigen, wie man Abhängigkeiten in das Viewmodel einfügt. Lassen Sie uns zunächst Module öffnen, Gradle-Datei erstellen und Abhängigkeiten für Kotlin-Erweiterungen für Aktivitätsartefakte hinzufügen . Innerhalb des Prognoseansichtsmodells erstellen wir veränderliche LiveData für die Reaktion auf die Prognose. Und wir erstellen LiveData, die anhand der prognostizierten Aktivität beobachtet werden. Wenn das Prognosemodell initialisiert wird. Die Prognosemethode wird jedoch aufgerufen. Die Prognosemethode erstellt eine Coroutine, die gelöscht wird. Wenn dieses Ansichtsmodell gelöscht ist. Insights ist Coroutine Scope. Wir erhalten die Prognosedaten und aktualisieren veränderliche LiveData. Bei der Prognoseaktivität injizieren wir das Prognoseansichtsmodell, indem wir keine Inject-Annotation verwenden, sondern die ViewModel-Provider-API verwenden. Andernfalls hätten wir mehrere Instanzen von View Model. Hier stellen wir den Beobachter für Wettervorhersagedaten ein, der bei Update die Prognosemethode anzeigen aufruft. Lassen Sie uns nun diese Anwendung ausführen und das Ergebnis sehen. Wie Sie sehen können, funktioniert es. Aber dieses Mal erhalten wir ein Daten-in-View-Modell statt Aktivität. 12. Bindungen: In diesem Video werde ich zeigen, wie man Binds-Annotationen verwendet. Jetzt erstellen wir ein Datenrepository, das als einzelne Datenquelle dient. Zu diesem Zweck erstellen wir eine Schnittstelle namens Repository mit einer Funktion, get forecast. Es ist die Suspend-Funktion, die die prognostizierte Antwort zurückgibt. Wir erstellen eine Klasse namens Repository Impulse, die die Implementierung der Repository-Schnittstelle ist. Und es erhält eine API-Instanz zur Implementierung der get-Forecast-Methode. In der App-Modulklasse erstellen wir eine Funktion, die eine Repository-Implementierungsinstanz bereitstellt Repository-Implementierungsinstanz , wenn das Repository angefordert wird. Nicht hier erhalten wir eine API-Instanz und verwenden die Repository-Implementierung. In früheren Videos haben wir die Annotation „ provides“ verwendet , um Abhängigkeiten zu vermitteln. In diesem Video möchte ich jedoch eine andere Möglichkeit zeigen, um Abhängigkeit zu gewährleisten. Zu diesem Zweck erstellen wir ein weiteres Modul, das Abhängigkeiten für die Singleton-Komponente bereitstellt. Und in diesem Fall verwenden wir bindende sanitäre Einrichtungen, um für Abhängigkeit zu sorgen. Hier erstellen wir eine neue Funktion, die eine Repository-Implementierungsinstanz bereitstellt Repository-Implementierungsinstanz , wenn das Repository angefordert wird. Wenn wir Binden und Sanitärinstallationen verwenden, erfolgt die Umsetzung der Funktion per Griff. Bei der Repository-Implementierung aktivieren wir diesen Codeausschnitt um API einfügen zu können, wenn wir Binds Sanitation verwenden Implementierung der Funktion erfolgt durch Health. Aus diesem Grund müssen wir die Inject-Annotation in der Konstruktorfunktion verwenden , um die API-Instanz zu injizieren. In Ihrem Prognosemodell fügen wir ein Repository statt einer API ein, es dient einer einzigen Datenquelle. Lassen Sie uns nun diese Anwendung ausführen und das Ergebnis sehen. Wie wir sehen können, funktioniert es genauso. Aber dieses Mal haben wir das Repository als einzige Datenquelle verwendet . Außerdem nutzen wir öffentliche Sanitärsysteme, um Abhängigkeiten zu vermeiden. 13. Singleton: In diesem Video werde ich zeigen, wie dieselbe Instanz bereitgestellt wird, wenn eine Abhängigkeit angefordert wird. Das Modul stellt Abhängigkeiten für die Singleton-Komponente bereit und erstellt jedes Mal Instanzen , wenn eine Abhängigkeit angefordert wird. Um dies zu überprüfen, können wir eine API-Instanz einfügen und uns als Zeichenfolge anmelden. Wir machen dasselbe im Repository in der Bulk-Klasse. Lassen Sie uns nun diesen Code ausführen und das Ergebnis sehen. Sie fühlen sich offen für Logcat, wir können sehen, dass die API-Instanzen nicht identisch sind. Um das Modul so zu gestalten, dass es jedes Mal dieselbe Instanz zurückgibt jedes Mal dieselbe Instanz können wir die Singleton-Annotation verwenden. Diese Anmerkung weist Healed an, nur eine Instanz im Singleton-Komponentenabhängigkeitscontainer zu erstellen nur eine Instanz im . Lassen Sie uns nun diesen Code ausführen und das Ergebnis sehen. Dieses Mal können wir sehen , dass die Instanzen dieselben sind. 14. KONTEXT: In diesem Video werde ich zeigen, wie man Kontext einfügt. Zunächst müssen wir eine Abhängigkeit für den HTTP-Interceptor und den Farbprüfer hinzufügen . Im App-Modul erstellen wir eine Instanz des Chakra-Interzeptors, für die Kontext erforderlich ist. Wir können den Kontext mithilfe der Annotation von Anwendungskontexten abrufen. Dann fügen wir den Chocolate Interceptor in die Funktion , in der wir eine Instanz eines OK-HTTP-Clients erstellen. Dann stellen wir einen HTTP-Client eine Funktion bereit, in der wir eine Retrofit-Instanz erstellen. Lassen Sie uns nun diesen Code ausführen und das Ergebnis sehen. Öffnen Sie nach dem Ausführen die Navigationsleiste und klicken Sie auf die Benachrichtigung, die besagt, dass die Aufzeichnung eine GTP-Aktivität ist. Und hier sehen wir die Liste der Anfragen, die an das Backend gesendet wurden. 15. Benannt: In diesem Video werde ich zeigen, wie Instanzen desselben Typs mit der Name-it-Annotation versehen werden. Öffnen Sie zunächst die von Modulen erstellte Gradle-Datei und fügen Sie eine Abhängigkeit für den HTTP-Logging-Interceptor hinzu. Diese Bibliothek protokolliert HTTP-Anfragen in Logcat. Öffnen Sie dann die Modulklasse und fügen Sie eine Funktion hinzu, die einen weiteren Login-Interzeptor bereitstellt. Und jetzt bieten wir zwei Instanzen der gleichen Zeit an. Abfangjäger. Wenn wir Abhängigkeit injizieren, sollte Heel wissen, welche Instanz wir injizieren möchten. Zu diesem Zweck wird eine benannte Annotation verwendet. Hier legen wir die Name-It-Annotation mit dem Login-Interceptor-Schlüssel fest. Für den Tucker-Interceptor verwenden wir den Namen und die Anmerkung mit dem HTTP-Interzeptorschlüssel. Wenn wir diese Instanzen erhalten, sollten wir dieselbe Annotation mit demselben Schlüssel verwenden. Und hier stellen wir auf HTTP-Interzeptoren für den HTTP-Client ein. Lassen Sie uns nun diese Anwendung ausführen und das Ergebnis sehen. Jetzt können wir das Protokoll für HTTP-Anfragen in Logcat sehen. 16. Qualifier: In diesem Video werde ich eine andere Möglichkeit zeigen, wie Sie Instanzen desselben Typs mithilfe benutzerdefinierter Anmerkungen bereitstellen können. In der App-Moduldatei erstellen wir zwei benutzerdefinierte Anmerkungen mithilfe von Qualifier-Annotationen . Mithilfe der Retentionsannotation erstellen wir, dass diese Anmerkung in der Binärausgabe gespeichert wird. Und wir erstellen Annotationen, HTTP-Interceptor und Login-Interceptor. Hier stellen wir Instanzen von Interceptor benutzerdefinierte Anmerkungen anstelle von Namen-ID-Annotationen verwenden. Außerdem ersetzen wir die Name-it-Annotation durch eine benutzerdefinierte Annotation, wenn wir diese Instanzen erhalten. Lassen Sie uns nun diese Anwendung ausführen und das Ergebnis sehen. Und wir können das gleiche Ergebnis sehen, das Protokoll der HTTP-Anfragen in Logcat. 17. Komponente: In diesem Video werden wir über Komponenten sprechen. Einer der Vorteile der Healed Library ist, dass sie vordefinierte Komponenten enthält. Komponenten sind Abhängigkeitscontainer, die Abhängigkeiten injizieren. Jede Komponente ist in einer Android-Anwendung an einen bestimmten Lebenszyklus gebunden . Hier sehen wir die Hierarchie der Komponenten und die Hauptkomponente ist eine Singleton-Komponente. Es ist in der gesamten Anwendung verfügbar. Es wird erstellt, wenn die Anwendung erstellt wird, es wird zerstört, wenn die Anwendung zerstört wird. Gleiches gilt für andere Komponenten, z. B. wird die Aktivitätskomponente erstellt, wenn Aktivität erstellt und zerstört wird. Wenn die Aktivität zerstört wird. Dies ist nützlich, wenn wir Abhängigkeit nur für eine Aktivität benötigen , nicht für eine gesamte Anwendung. Gemäß dieser Hierarchie Abhängigkeiten der Singleton-Komponente sind Abhängigkeiten der Singleton-Komponente für die Aktivitätskomponente verfügbar, aber Abhängigkeiten der Aktivitätskomponente sind nicht für die Singleton-Komponente oder andere Komponenten wie die ViewModel-Komponente verfügbar oder andere Komponenten wie , da es sich um eine Geschwisterkomponente handelt. Anmerkung oben: Jede Komponente wird verwendet, um eine einzelne Instanz der Abhängigkeit bereitzustellen, z. B. Singleton-Annotation für die Singleton-Komponente oder Activity Sculpt-Annotation für die Aktivitätskomponente verwendet. Lassen Sie uns ein neues Modul erstellen, das Abhängigkeiten für die Aktivitätskomponente bereitstellt . Öffnen Sie zunächst die AT-Module, erstellen Gradle-Datei und fügen Sie eine Abhängigkeit für die Picasso-Bibliothek hinzu. Es wird verwendet, um das Bild zu laden. Dann fügen wir im Prognose-XML für Listenelemente ein neues ImageView hinzu, um das Symbol für die Wetterbedingungen anzuzeigen. Dann erstellen wir eine neue Schnittstelle namens Image Loader, die eine Funktion hat, um das Bild von der URL in die Bilddaten zu laden . Danach erstellen wir eine Implementierung des Bildladers namens Picasso Image Loader, und sie implementiert die Funktion zum Laden von Bildern mithilfe der Picasso-Bibliothek. Danach erstellen wir ein neues Modell namens Aktivitätsmodul, das Abhängigkeiten bereitstellt. Für die Aktivitätskomponente. Er hat eine Funktion und er stellt deshalb den Bildlader zur Verfügung, wenn der Bildlader angefordert wird. Hier verwenden wir die Activity Sculpt-Annotation , um eine Instanz von Image Loader zu verwenden. Bei der Prognoseaktivität injizieren wir den Imageloader und geben ihn an den Prognoseadapter weiter. Im Forecast-Adapter erhalten wir diesen Bildlader und verwenden ihn, um das Bild von der URL in ImageView zu laden. Lassen Sie uns diesen Code ausführen und das Ergebnis sehen. Wie wir jetzt sehen können , werden Symbole für Wettervorhersagen und Bedingungen angezeigt. 18. Vielen Dank: Dies ist das Ende dieses Kurses, in dem Sie lernen welche Abhängigkeit und welche Abhängigkeitsinjektion. Sie werden lernen, wie Sie Healed einrichten, um die Abhängigkeitsinjektion zu implementieren , indem Sie verschiedene Futures von Hailed verwenden. Als Bonus möchte ich Interviewfragen zu den Themen Abhängigkeitsinjektion und Heilung stellen . Es ist eine PDF-Datei mit Fragen und Antworten, die Sie im Ressourcenbereich dieses Videos herunterladen können. Ich möchte mich bei Ihnen dafür bedanken, dass Sie sich diesen Kurs angesehen haben. Ich hoffe es hat dir gefallen und wir sehen uns in meinen nächsten Kursen.