У меня есть приложение android
, которое разработано в kotlin, также мы используем kodein
зависимость для привязки данных. При первом связывании данных он будет привязан правильно, но не связывается при втором вызове.
inner class CallmyClass() : MultiDexApplication(), KodeinAware {
val diModel = Kodein.Module {
bind<ExchangeRateProvider>() with singleton { CryptoCompareExchangeProvider(this@App, instance()) }
bind<SyncProgressProvider>() with singleton { SyncProgressProvider() }
bind<WallethKeyStore>() with singleton { keyStore }
bind<Settings>() with singleton { KotprefSettings }
bind<CurrentTokenProvider>() with singleton { CurrentTokenProvider(instance()) }
bind<AppDatabase>() with singleton { Room.databaseBuilder(applicationContext, AppDatabase::class.java, "maindb").build() }
bind<NetworkDefinitionProvider>() with singleton { NetworkDefinitionProvider(instance()) }
bind<CurrentAddressProvider>() with singleton { InitializingCurrentAddressProvider(keyStore, instance(), instance(), applicationContext,1) }
bind<FourByteDirectory>() with singleton { FourByteDirectoryImpl(instance(), applicationContext) }
}
val appDiModule = Kodein.Module(allowSilentOverride = true) {
import(diModel)
}
override val kodein: Kodein = Kodein {
import(appDiModule)
}
}
проблема в том, что при первом связывании этот код будет оправдывать
bind<CurrentAddressProvider>() with singleton { InitializingCurrentAddressProvider(keyStore, instance(), instance(), applicationContext,i) }
и "InitializingCurrentAddressProvider()"
этот класс вызывается и успешно выполняется.
НО, когда япопытайтесь вызвать эти строки
bind<CurrentAddressProvider>() with singleton { InitializingCurrentAddressProvider(keyStore, instance(), instance(), applicationContext,i) }
во второй раз, когда строка выполняется, но
"InitializingCurrentAddressProvider()"
этот класс не выполняется.Вот в чем проблема, если второй класс будет выполнять, значит, я получу результат, тогда автоматически результат будет привязан.но это не выполняется.