I'm using Dagger v2.12 with dagger-android-support with the following config:
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
...
}
Analysing the memory dump, I noticed that the MainPresenter class has been created twice, one been referenced in MainActivity and dagger.internal.DoubleCheck(as expected) 1, but, there are a second instance referenced only in dagger.internal.DoubleCheck 2.
Why this is happening? Is this a bug, expected behaviour or some issue in my Dagger config?
Edit: Sample repository with the issue https://github.com/ismaeldivita/dagger-test-so


