2014-05-09 70 views
0

我想創建工作經理,哪些工作可以注射成員。是否可以注入匕首ObjectGraph?

jobManager.queueJob(new Job1());

作業排隊後,我想在啓動它之前調用對象圖並注入作業域。

什麼是從JobManager類訪問對象圖的正確方法?

目前我正在注入具有ObjectGraph getter的android應用程序類。

回答

0

匕首1不能注入注射器。 Dagger 2將具有強類型的注射器(您提供的界面),這些注射器是可注射的,有效地允許注射器注射。

+0

我的方法通過應用程序對象訪問圖是不好的做法嗎? –

+0

注射器(guice術語)通常是不好的做法。具體來說,在應用程序內任意調用graph.get()是不明智的 - 它會創建易碎且難以測試的依賴關係。 Dagger 2.0將允許你對強類型和你自定義的類型有依賴關係,這樣你就可以更靈活地完成這類事情,而不需要使用「注入器」或「圖形管理對象」使你的代碼難以理解,並且很難測試。 –

0

如果使用從https://github.com/yigit/android-priority-jobqueue的JobManager,那麼你可以通過設置在JobManger Configuration對象注入與匕首1作業:

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

現在,添加到JobManager所有作業都將被注入。這假定你有一個公開getObjectGraph()方法的Application子類。