Android-使用Dagger在运行时创建对象

本乔

我从Square找到了Dagger库,目前正在做一些测试。我是DI原理的新手,所以请客气:)

因此,我了解Dagger可以注入字段和构造函数。我还知道,在我的活动中,必须.inject(this);这样做,以便可以在运行时完成注入。但是,在活动初始​​化之后需要创建的对象O呢?

如果O具有可注入字段,则必须.inject(O);在使用它之前先进行操作,否则NullPointerException在访问其注入变量时会得到a 但是,如果我编写了一个可注入的构造函数,则不会出现问题,也不会出现运行时异常。当然,我根据文档编写了@Module。

Dagger的目的是注入没有其他代码可写的字段吗?我是否必须手动.inject();所有对象?肯定有一件我想念的东西。

提前致谢。

汤姆罗布

在撰写本文时,Dagger支持两种注入:

  • 场注入
  • 构造函数注入

在第一种情况下,您创建一个对象,然后使用injectmethod注入字段例如,在您onCreate的“活动”中,您将称为:

mObjectGraph.inject(this);

第二种类型的注入(构造函数注入)要求对象由Dagger创建。您只需用@Inject注解标记构造函数,然后可以创建如下实例:

HasInjectableConstructor instance = mObjectGraph.get(HasInjectableConstructor.class);

而已。也许Dagger 2在这件事上会有所改变:squ.re/dagger2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章