2016-11-17 7 views
0

을의 구성 요소 (TasksRepositoryComponent)를 이해 할 수 없습니다 : - https://github.com/googlesamples/android-architecture/tree/todo-mvp-dagger/todoapp는 안드로이드 아키텍처 샘플 할 일-MVP-단검 나는이 안드로이드 아키텍처 샘플 코드를 통해 이동하는 것을 시도하고있다

나뿐만 아니라이 사용자 설명서를 읽고 -

https://google.github.io/dagger/users-guide

@Singleton 
@Component(modules = {TasksRepositoryModule.class, ApplicationModule.class}) 
public interface TasksRepositoryComponent { 

    TasksRepository getTasksRepository(); 
} 

ToDoApplication의 WHI TasksRepositoryComponent의 코드입니다 - 왜 다른 구성 요소와 같은 주사한다() 메소드가 TasksRepositoryComponent하지 않습니다

  1. :

    mRepositoryComponent = DaggerTasksRepositoryComponent.builder() 
           .applicationModule(new ApplicationModule((getApplicationContext()))) 
           .build(); 
    

    내가 몇 가지를 이해할 수 없다 - 채널은 응용 프로그램에서 onCreate에서이 코드를()가 확장 앱?

  2. ToDoApplication이 build() 전에 DaggerTasksRepositoryComponent에서 tasksRepositoryModule() 메서드를 호출하지 않는 이유는 무엇입니까? 왜 그렇게 필요하지 않습니까?

dagger2를 사용하는 동안 준수해야 할 규칙에 대한 좋은 문서를 찾을 수있는 곳이 있습니까?

+1

같은 것을 볼 수 있습니다 : http://stackoverflow.com/questions/40562481/dagger-2-lack-of-constructor-injection-를 예/40563125 # 40563125 및 http://stackoverflow.com/questions/40545075/dagger2-and-android/40546157#40546157 아직 사용하지 않는 것들이 많이 있습니다 ('@ IntoSet', @Binds', 기타.) – EpicPandaForce

답변

0

TasksRepositoryComponent 앱에서 다른 구성 요소와 같은 inject() 방법이 없습니다?

TaskRepositoryComponent

는 depedent 구성 요소 TaskRepository에 대한 바인딩 게시의 목적을 가진 부모 구성 요소입니다. 종속 구성 요소는 TaskRepository에 대한 바인딩을 상속하고 해당 주입 사이트에 주입 할 수 있습니다. 이 기능에 대한 자세한 내용은 documentation for dependent components을 참조하십시오.

ToDoApplicationbuild() 전에 DaggerTasksRepositoryComponent의 방법 tasksRepositoryModule()를 호출하지 않습니다? 왜 그렇게 필요하지 않습니까?

TasksRepositoryModule에는 매개 변수가없는 기본 public 생성자가 있으므로 생성 된 구성 요소는 빌더에서 명시 적으로 구성하지 않고 초기화 할 수 있습니다. DaggerTasksRepositoryComponent에서 생성 된 코드에서보세요 - 당신이 도움이 될

if (tasksRepositoryModule == null) { 
    tasksRepositoryModule = new TasksRepositoryModule(); 
}