很长时间以来,我一直在用匕首组件挣扎。
最初,我为每个自定义作用域组件制作了Injectors
类,这些组件包含带有WeakReference<Component>
或仅包含Component
的静态字段,因此我始终可以访问这个组件通过静态方法。
但是我认为这是一个非常糟糕的方法,因为可以清除WeakReference
,因此您不会得到相同的Component
,而且您可能会忘记在静态字段中清除Component
当我具有由App实现的ComponentsHolder
接口时,我设计了另一种方法,该接口包含一些添加,删除和检查组件是否存在于同一App类中的HashMap<String, Component>
中的方法。
因此,这种方法与Context
的kotlin扩展相结合,为我提供了一个绝佳的机会,可以在我有Context
的任何地方注入东西,就像这样:
context.injector(Component::class) {
inject(this@ObjectWhereToInject)
}
所以我介意我做错了什么?还是有更好的方法来存储和检索匕首组件?