I am using Dagger v2.12 dagger-android-support
with the following configuration:
AppComponent
@Singleton
@Component(
modules = arrayOf(
AndroidSupportInjectionModule::class,
AndroidBindingModule::class,
AppModule::class
)
)
interface AppComponent : AndroidInjector<App> {
@Component.Builder
abstract class Builder : AndroidInjector.Builder<App>()
}
AndroidBindingModule
@Module
abstract class AndroidBindingModule {
@PerActivity
@ContributesAndroidInjector(modules = arrayOf(MainModule::class))
internal abstract fun contributeMainActivityInjector(): MainActivity
}
Mainmodule
@Module
class MainModule {
...
@Provides @PerActivity
fun providePresenter(rxLifecycle: ReactiveLifecycle, view: MainView) =
MainPresenter(rxLifecycle, view)
}
Mainactivity
class MainActivity : BaseActivity() {
@Inject
lateinit var presenter: MainPresenter
...
}
Analyzing the memory dump, I noticed that the class MainPresenter
was created twice, which was referenced in MainActivity
and dagger.internal.DoubleCheck
(as expected) 1 , but there is a second instance, indicated only in dagger.internal.DoubleCheck
2 .
Why is this happening? Is this a bug, an expected behavior, or some problem in my Dagger configuration?
Edit: An example repository with a problem https://github.com/ismaeldivita/dagger-test-so
source
share