Ich benutze Dagger , um Abhängigkeiten in ein zu injizieren Android-Anwendung, und ich stolperte über ein Problem, das ich nicht ganz sicher bin wie man sauber auflösen kann.
Was ich versuche zu erreichen, ist Helfer zu installieren und sie in meine Hände zu injizieren Aktivität, und diese Helfer enthalten auch injizierte Mitglieder.
Was funktioniert
?Die Aktivität, in die mein Helfer injiziert wird:
%Vor%Die Anwendung, die das Objektdiagramm erstellt:
%Vor%Die Injektion funktioniert perfekt, wenn ich eine SampleHelper-Klasse direkt installiere, welches seinerseits einen injizierten Anwendungskontext erhält:
%Vor%Mit dem folgenden Modul:
%Vor%Was nicht funktioniert
Wenn ich jedoch die Hilfeschnittstelle von ihrer Implementierung abtrenne:
%Vor%Und füge das dem Dolch-Modul hinzu:
%Vor%Der Kontext wird in meinem SampleHelperImpl nicht injiziert, wie ich es erwartet hätte. Nun, ich denke, dies liegt daran, dass SampleHelperImpl eher durch direkten Konstruktoraufruf instanziiert wird dieser injektionsinitiierte Konstruktoraufruf, weil MyModule # provideApplicationContext () nicht einmal aufgerufen wird, so ist meine Vermutung, dass mir etwas über Dolch fehlt (was wahrscheinlich ist, da meine früheren DI-Erfahrungen nur Spring enthielten).
Irgendeine Idee darüber, wie mein Kontext in meiner injizierten Helper-Implementierung in einer "sauberen Dolch" -Weise injiziert werden kann?
Vielen Dank!
Das ist eine ziemlich alte Frage, aber ich denke, was Sie wollen, ist dies:
%Vor% Auf diese Weise wird Dagger Ihr SampleHelperImpl
erstellen und es daher injizieren.
Falls jemand interessiert ist, können Sie beim Implementieren einer @ Provides-Methode in einem Dolch-Modul dolch-gehandhabte Objekte wie diese erhalten:
%Vor%Das funktioniert, aber ich finde es immer noch etwas ungeschickt, da ich meine Helfer-Setter explizit nennen muss (normalerweise, was du mit der Injektion loswerden willst).
(Ich warte ein wenig, falls jemand mit einer besseren Lösung kommt)
Tags und Links android dependency-injection dagger