2014-02-08 4 views
5

그래서 이번 주말에 Mortar and Flow과 많은 시간을 보내고 있습니다. 나는 그것이 원래 생각했던 것보다 조금 더 복잡하다는 것을 발견했다. 그 이유는 대부분 Mortar가 크게 의존하고있는 Dagger의 ObjectGraph Scoping에 대해 내 마음을 제대로 갖지 않았기 때문이다. Dagger 사이트에서이 기사를 읽을 수있는만큼 많이 읽었지 만, 단검과 관련이있을 때이 주제에 대한 정보가 부족합니다.흐름/박격포로 단검 및 객체 그래프 스코핑

그래서 몇 가지 질문이 있습니다

@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); 
    } 
    } 

그것은 내부 클래스의 구체적 때문에이 모듈로 범위이 경우 발표자 : 나는 싱글의 @ 범위 지정 이들의 예를 참조 1.? 2. 인스턴스가이 개체 그래프에서만 생성되지만 전역 응용 프로그램 개체 그래프에서는 생성되지 않도록하려면 어떻게해야합니까? 2. 발표자가 너무 크면 자신의 별도 강의실로 옮기고 싶습니다. 이 모듈의 범위는 어떻게됩니까? 3. 예제에서 Module 클래스 중 일부는 정적이고 다른 클래스는 정적이라는 것을 알았습니다. 이것이 스코프에 영향을 미칩니 까? 4. Dagger의 Object Graph를 더 잘 이해하기 위해 더 읽을 수있는 곳은 어디입니까? 난의는, 주입 addsTo과 이러한이 ObjectGraph 생성 등에 사용되는 포함하는 더 나은 이해를 얻을 필요가 :

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

답변

0
  1. 내가 발표자 회전에 있기 때문에 모듈로 범위가 있습니다 믿지 않는 사람들 보존됩니다. @Singleton 주석은 또한 발표자가 글로벌 그래프 상에 있고 활동이 스스로 재현 될 때 단지 뷰에 묶여 있다고 믿게합니다.

  2. 여기에 좋은 범위는 source입니다.

  3. Effective Java는 정적 내부 대 정적이 아닌 익명 클래스에 대한 환상적인 설명을 제공합니다.