2014-02-08 4 views
5

Also habe ich dieses Wochenende viel Zeit mit Mortar and Flow verbracht, und ich denke, ich habe endlich das meiste raus gemacht. Ich habe festgestellt, dass es ein bisschen komplexer ist, als ich ursprünglich dachte, hauptsächlich weil ich mich nicht ganz mit Daggers ObjectGraph Scoping beschäftigt habe, worauf sich Mortar stark verlässt. Ich habe so viel gelesen, wie ich auf Daggers Seite finden konnte, aber ich finde Informationen zu diesem Thema fehlen, wenn es speziell auf Dagger bezogen ist.Dolch und Objekt Graph Scoping mit Fluss/Mörtel

Also habe ich ein paar Fragen: 1. Ich Beispiele von ihnen sehen Scoping @ Singletons:

@Layout(R.layout.screen_friend) 
public class FriendScreen implements Blueprint { 

    @Override public String getMortarScopeName() { 
    return getClass().getName(); 
    } 

    @Override public Object getDaggerModule() { 
    return new Module(); 
    } 

    @dagger.Module(
     injects = FriendView.class 
) 
    static class Module { 
    } 

    @Singleton 
    public static class Presenter extends ViewPresenter<TestView> { 

    @Inject 
    public Presenter() { 
     Log.d("FriendScreen", "Friend Presenter Created"); 
    } 

    @Override protected void onLoad(Bundle savedInstanceState) { 
     super.onLoad(savedInstanceState); 
    } 
    } 

Ist Moderator in diesem Fall zu diesem Modul scoped speziell, weil es eine innere Klasse ist? 2. Wie kann ich sicherstellen, dass eine Instanz nur in diesem Objektdiagramm, aber nicht im globalen Anwendungsobjektdiagramm erstellt wird? 2. Was wäre, wenn der Präsentator zu groß wäre und ich ihn in seine eigene separate Klasse verschieben wollte? Wie würde ich es nur auf dieses Modul beschränken? 3. Ich habe festgestellt, dass einige der Modulklassen in ihren Beispielen statisch sind und andere nicht. Hat das Auswirkungen auf das Scoping? 4. Wo kann ich mehr lesen, um Daggers Objektdiagramm besser zu verstehen? Ich brauche ein besseres Verständnis enthält zu bekommen, spritzt, addsTo und wie in ObjectGraph Schöpfung etc diejenigen verwendet:

@dagger.Module(// 
     includes = ActionBarModule.class, 
     injects = MainView.class, 
     addsTo = ApplicationModule.class, // 
     library = true // 
) 

Antwort

0
  1. Ich glaube nicht, dass Moderatoren zu einem Modul scoped sind da auf einer Dreh sie sind erhalten. Die @ Singleton-Annotation lässt mich auch glauben, dass ein Moderator in einem globalen Diagramm ist und sich nur an eine Ansicht bindet, wenn sich eine Aktivität selbst erstellt.

  2. Hier ist ein gutes Scoping source.

  3. Effektive Java hat eine fantastische Erklärung über statische innere vs nicht statische innere vs anonyme Klassen, wenn Sie mehr über diese lernen möchten.