AndroID应用程序,我偶然发现了一个我不完全确定的问题
如何以干净的方式解决.
我想要实现的是实现帮助并将其注入我的内部
活动,并让这些助手也包含注入的成员.
什么有效
我的助手注入的活动:
public class MyActivity extends Activity { @Inject SampleHelper helper; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((MyApplication) getApplication()).inject(this); Log.i("deBUG","helper = " + helper); Log.i("deBUG","helper context = " + helper.context); }}
创建对象图的应用程序:
public class MyApplication extends Application { private ObjectGraph graph; @OverrIDe public voID onCreate() { super.onCreate(); graph = ObjectGraph.create(getModules()); } private Object[] getModules() { return new Object[] { new MyModule(this) }; } public voID inject(Object target) { graph.inject(target); }}
当我直接实例化SampleHelper类时,注入工作完美,
它反过来接收注入的应用程序上下文:
@Singletonpublic class SampleHelper { @Inject public Context context; @Inject public SampleHelper() {}}
使用以下模块:
@Module( injects = { MyActivity.class },complete = false,library = true)public class MyModule { private final MyApplication application; public MyModule(MyApplication application) { this.application = application; } @ProvIDes @Singleton Context provIDeApplicationContext() { return application; }}
什么行不通
但是,当我将辅助接口与其实现分开时:
public interface SampleHelper {}@Singletonpublic class SampleHelperImpl implements SampleHelper { @Inject public Context context; @Inject public SampleHelperImpl() {}}
并将其添加到匕首模块:
public class MyModule { ... // added this method @ProvIDes @Singleton public SampleHelper provIDeSampleHelper() { return new SampleHelperImpl(); } ...}
正如我所料,上下文不会被注入我的SampleHelperImpl中.现在,我想这是由于SampleHelperImpl是通过直接构造函数调用而实现的
那个注入启动的构造函数调用,因为MyModule#provIDeApplicationContext()甚至没有被调用,所以我的猜测是我错过了一些关于Dagger的东西(很可能,因为我以前的DI体验只包括Spring).
关于如何在我的注入帮助器实现中以“干净的Dagger”方式注入我的上下文的任何想法?
非常感谢!
解决方法 这是一个相当古老的问题,但我认为你想要的是:@ProvIDes @Singleton public SampleHelper provIDeSampleHelper(SampleHelperImpl impl) { return impl;}
这样Dagger将创建SampleHelperImpl并因此注入它.
总结以上是内存溢出为你收集整理的android – 匕首和嵌套注射全部内容,希望文章能够帮你解决android – 匕首和嵌套注射所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)