摆脱Dagger 2警告“生成一个MembersInjector”
鉴于以下课程
abstract class AbstractClass { @Inject SomeDependency someDependency; } class SomeClass extends AbstractClass { @Inject AnotherDependency anotherDepenency; public void onCreate() { component = // Get component instance somehow component.inject(this); } }
在Dagger 2中,当将依赖项注入到从包含依赖项的抽象基类扩展的类中时,Dagger显示了Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead.
类型的警告Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead.
Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead.
在编译期间。
但是,如果我在AbstractClass
覆盖/实现onCreate()
并在那里调用dependency injection,那么依赖someDependency
将被注入两次,这可能会导致意外行为。 一次进入AbstractClass
onCreate()
,一次进入SomeClass
onCreate()
。
在防止重复注入依赖项的同时摆脱此警告的最佳解决方案是什么?
截至Dagger 2.9,这些警告默认是关闭的。
解决方案可以是:仅在Abstract类中定义onCreate()