【发布时间】:2019-04-19 08:05:55
【问题描述】:
我们在我们的项目中使用KOIN 类似 DI 库。
在某些情况下,当 Koin 上下文被杀死并再次重新创建时,ViewModel 实例不刷新。我们需要实现像'在运行时重新组装依赖图'这样的功能,这个问题对我们来说非常关键。
我有这样的 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() 正在调用时 - 一切都很好,图中的另一个实例正在刷新,但注入活动的 ViewModel 没有,它们保留旧的引用。我想,该视图模型附加到活动生命周期,并且可以帮助活动重新创建,但我认为这不是最好的解决方案。
有人遇到同样的问题吗?并请帮助我提出建议,如何解决它,请。
【问题讨论】:
标签: android dependency-injection viewmodel android-architecture-components koin