мы используем в нашем проекте 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()
вызывает- все хорошо, другие экземпляры в графе обновляются, но ViewModels, которые вводятся в активность, - нет, и они сохраняют старые ссылки.Я думаю, что viewmodel привязан к жизненному циклу активности и может помочь в активном отдыхе, но я думаю, что это не лучшее решение.
У кого-нибудь есть такие же проблемы?И помогите пожалуйста советом, как решить, пожалуйста.