如何管理Dagger2组件的创建和存储

时间:2019-03-14 11:42:55

标签: android dagger-2 dagger

很长时间以来,我一直在用匕首组件挣扎。 最初,我为每个自定义作用域组件制作了Injectors类,这些组件包含带有WeakReference<Component>或仅包含Component的静态字段,因此我始终可以访问这个组件通过静态方法。

但是我认为这是一个非常糟糕的方法,因为可以清除WeakReference,因此您不会得到相同的Component,而且您可能会忘记在静态字段中清除Component

当我具有由App实现的ComponentsHolder接口时,我设计了另一种方法,该接口包含一些添加,删除和检查组件是否存在于同一App类中的HashMap<String, Component>中的方法。

因此,这种方法与Context的kotlin扩展相结合,为我提供了一个绝佳的机会,可以在我有Context的任何地方注入东西,就像这样:

context.injector(Component::class) {
   inject(this@ObjectWhereToInject)
}

所以我介意我做错了什么?还是有更好的方法来存储和检索匕首组件?

0 个答案:

没有答案