2014-05-09 3 views
0

작업이 주저 회원을 가질 수있는 작업 관리자를 만들고 싶습니다.대거 ObjectGraph를 주입 할 수 있습니까?

jobManager.queueJob (새 Job1());

작업이 대기열에 들어간 후에 나는 그것을 시작하기 전에 객체 그래프를 호출하고 작업 필드를 주입하려고합니다.

JobManager 클래스에서 객체 그래프에 액세스하는 적절한 방법은 무엇입니까?

현재 ObjectGraph 용 getter가있는 안드로이드 응용 프로그램 클래스를 주입하고 있습니다.

답변

0

단검 1은 인젝터를 주입 할 수 없습니다. 단검 2에는 강하게 입력 된 인젝터 (인터페이스로 제공)가 있으며 인젝터를 효과적으로 주입 할 수 있도록 인서트 가능합니다.

+0

응용 프로그램 개체를 통해 그래프에 액세스하는 방법이 좋지 않은가요? –

+0

주사기 주입 (guice 전문 용어)은 일반적으로 나쁜 습관입니다. 특히 graph.get()을 앱 내에서 임의로 호출하는 것은 어쩔 수없는 일입니다. 즉, 취약하고 테스트하기 어려운 종속성을 만듭니다. Dagger 2.0을 사용하면 강력한 유형, 사용자 정의 유형에 대한 의존성을 가질 수 있으므로 "인젝터"또는 "그래프 관리 객체"가 없어도 이러한 종류의 작업을보다 유연하게 수행 할 수 있으므로 코드를 추론하기가 어렵습니다. 테스트하기가 어렵습니다. –

0

당신은 당신이 JobManger에 구성 객체를 설정하여 단검과의 작업을 삽입 할 수 https://github.com/yigit/android-priority-jobqueue에서 JobManager를 사용하는 경우 : 이제 JobManager에 추가하는 작업이 주입 될 것이다

public JobManager createJobManager(MyApp myApp) { 
    Configuration config = new Configuration.Builder(app) 
      .injector(new DependencyInjector() { 
       @Override 
       public void inject(Job job) { 
        myApp.getObjectGraph().inject(job); 
       } 
      }) 
      .build(); 

    return new JobManager(app, config); 
} 

합니다. 이것은 getObjectGraph() 메소드를 노출하는 Application 서브 클래스를 가지고 있다고 가정합니다.

관련 문제