мы используем в нашем проекте KOIN как библиотеку DI.
в некоторых случаях, когда экземпляр ViewModel не обновляется, когда контекст Koin убивает и воссоздает снова. Нам необходимо реализовать такую функцию, как «повторная сборка графа зависимостей во время выполнения», и эта проблема очень важна для нас.
У меня есть такой модуль ViewModel:
object ViewModelModule {
val module by lazy {
module {
viewModel { AppLauncherViewModel(get(), get(), get(), get()) }
viewModel { AuthLoginPasswordViewModel(get(), get()) }
viewModel { SettingsViewModel(get(), get()) }
// some others
}
}
}
И мой график собирается в приложении для Android следующим образом:
private fun assembleGraph() {
val graph = listOf(
AppModule.module,
StorageModule.module,
DatabaseConfigModule.module,
RepositoryModule.module,
InteractorModule.module,
ViewModelModule.module
)
application.startKoin(application, platformGraph)
}
fun reassembleGraph() {
stopKoin()
assembleGraph()
}
И когда reassembleGraph()
вызывает - все в порядке, другие экземпляры в графике обновляются, но модели представления, внедренные в активность, - нет, и они сохраняют старые ссылки. Я предполагаю, что эта модель просмотра привязана к жизненному циклу активности и может помочь в восстановлении активности, но я думаю, что это не лучшее решение.
У кого-нибудь такие же проблемы? И помогите пожалуйста советом, как решить, пожалуйста.