我从Square找到了Dagger库,目前正在做一些测试。我是DI原理的新手,所以请客气:)
因此,我了解Dagger可以注入字段和构造函数。我还知道,在我的活动中,必须.inject(this);
这样做,以便可以在运行时完成注入。但是,在活动初始化之后需要创建的对象O呢?
如果O具有可注入字段,则必须.inject(O);
在使用它之前先进行操作,否则NullPointerException
在访问其注入变量时会得到a 。但是,如果我编写了一个可注入的构造函数,则不会出现问题,也不会出现运行时异常。当然,我根据文档编写了@Module。
Dagger的目的是注入没有其他代码可写的字段吗?我是否必须手动.inject();
所有对象?肯定有一件我想念的东西。
提前致谢。
在撰写本文时,Dagger支持两种注入:
在第一种情况下,您创建一个对象,然后使用inject
method注入字段。例如,在您onCreate
的“活动”中,您将称为:
mObjectGraph.inject(this);
第二种类型的注入(构造函数注入)要求对象由Dagger创建。您只需用@Inject
注解标记构造函数,然后可以创建如下实例:
HasInjectableConstructor instance = mObjectGraph.get(HasInjectableConstructor.class);
而已。也许Dagger 2在这件事上会有所改变:squ.re/dagger2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句