dagger.android

___ tag123dagger2 ___ Dagger 2 ist ein Dependency-Injection-Framework für Java und Android. Es implementiert den vollständigen Stapel mit generiertem Code ___ tag123androidarchitecturecomponents ___ Eine neue Sammlung von Bibliotheken, mit denen Sie robuste, testbare und wartbare Android-Apps entwickeln können. Beginnen Sie mit Klassen zum Verwalten des Lebenszyklus Ihrer UI-Komponenten und zum Behandeln der Datenpersistenz. ___ qstnhdr ___ Beispiele für Android-Architekturkomponenten GithubBrowserSample: ViewModelModule, ViewModel-Parameter ___ tag123dagenderandroid ___ hilf uns, dieses Wiki zu bearbeiten ___ qstntxt ___

Eines der aktuellsten Beispiele zu Android Architecture Components ist GithubBrowserSample von Google. Ich überprüfte den Code und einige Fragen entstanden:

  1. Ich habe festgestellt, dass ViewModelModule ist in AppModule . Dies bedeutet, dass alle Ansichtsmodelle dem DI-Diagramm hinzugefügt werden. Warum wird das auf diese Weise gemacht, anstatt separate %code% für jede Aktivität / Fragment zu haben, die nur benötigte %code% für spezifische Aktivität / Fragment liefern würde?

  2. In diesem speziellen Beispiel werden Viewmodels mit GithubViewModelFactory Gibt es eine Möglichkeit, einen Parameter an die spezifische %code% zu übergeben? Oder die bessere Lösung wäre, einen Setter in %code% zu erstellen und den benötigten Parameter über Setter zu setzen?

___ tag123androidviewmodel ___ hilf uns dieses Wiki zu bearbeiten ___ answer46280749 ___
  
  1. [...] Es bedeutet, dass alle View-Modelle zum DI-Graphen hinzugefügt werden. Warum das auf diese Weise gemacht wird, anstatt für jede Aktivität / jedes Fragment ein eigenes Modul zu haben?
  2.   

Sie werden dem DI-Diagramm hinzugefügt, sie sind jedoch noch nicht erstellt. Stattdessen landen sie in einer Karte von Anbietern, wie im ViewModelFacory .

%Vor%

Also haben wir jetzt eine %code% , die eine Liste von Anbietern hat und jede %code% erstellen kann, die gebunden wurde. Fragmente und Aktivitäten können jetzt einfach die Factory einspeisen und ihr ViewModel abrufen.

%Vor%

Zum Warum ... Alternativ könnten Sie für jede Aktivität / jedes Fragment ein %code% erstellen und die Implementierung in jedem Modul registrieren. Dies wäre jedoch eine Menge duplicated Boilerplate-Code.

  
  1. In diesem speziellen Beispiel, in dem Viewmodels mit GithubViewModelFactory instanziiert werden, gibt es eine Möglichkeit, einen Parameter an das spezifische ViewModel zu übergeben? Oder die bessere Lösung wäre, einen Setter in ViewModel zu erstellen und den benötigten Parameter über Setter zu setzen?
  2.   

Es scheint so, als ob alle ViewModels nur von %code% -Objekten abhängen - was notwendig ist, da sie alle von der AppComponent bereitgestellt werden. Dies bedeutet, dass es keine Möglichkeit gibt andere "Parameter" als andere %code% Abhängigkeiten zu übergeben.

Sie müssen also, wie Sie vorgeschlagen haben, die Factory entweder in die Aktivität / Fragment-Komponente verschieben, um Abhängigkeiten mit niedrigerem Bereich bereitzustellen, oder eine Setter-Methode verwenden.

    
___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com. ___
1
Antwort

Beispiele für Android-Architekturkomponenten GithubBrowserSample: ViewModelModule, ViewModel-Parameter

Eines der aktuellsten Beispiele zu Android Architecture Components ist GithubBrowserSample von Google. Ich überprüfte den Code und einige Fragen entstanden: Ich habe festgestellt, dass ViewModelModule ist in AppModule . Dies bedeutet, da...
18.09.2017, 11:38