有该喷射器用于在模块中如下定义的在MainActivity由所述ApplicationComponent引用:跨越相同的活性生命周期的结果多点喷射在多个实例
@PerActivity
@ContributesAndroidInjector(modules = MainActivityModule.class)
abstract MainActivity mainActivityInjector();
和MainActivityModule由贡献者引用看起来像这样:
@Module
public class MainActivityModule {
@Provides
@PerActivity
public MyActivityDependency myActivityDependency() {
return new MyActivityDependency();
}
}
,并在MainActivity本身是:
@PerActivity范围应该在整个生命周期中保留Activity的依赖项实例。
这基本上意味着如果我多次执行注入(AndroidInjection.inject(this)),我有权获得相同的注入实例(至少这是目标)。
在这种情况下,为什么每次调用“.inject()”方法时都会注入MyDependency的不同实例?
除了确保实例针对每个范围正确缓存之外,没有具体的原因多次调用它。事实上,在较老的匕首方法中,可以进行这种完整性检查(或自动化测试)来确保这一点。它还可以确保意外错误不会中断应用程序的行为。 – Mahorad
@Mahorad我不明白你为什么要那样做,但我为你添加了一个替代方案来回答 –
谢谢大卫,你能详细阐述一下如何定义DoubleInjectActivityComponent并将它粘贴到ApplicationComponent和/或其他DI结构? – Mahorad