【发布时间】:2021-03-13 09:44:06
【问题描述】:
我将 Koin 用于 DI,但我试图消除对 DI 框架的依赖,所以我的问题是关于 Android 架构组件的一般性问题。
可以在片段中通过属性委托提供 ViewModel 的实例,但这会导致片段和 DI 框架之间的耦合。所以我想出了一个解决方案:在构造函数中将 ViewModel 传递给 Fragment。当前使用 Koin 的实现如下所示:
val di = module {
fragment {
MyFragment(
get<MyViewModel>(),
)
}
viewModel {
MyViewModel(
get<MyDependency>(),
)
}
//...
}
而且它有效。但是有一个问题!由于 ViewModel 是在 Fragment 之前创建的,因此它不遵循 Fragment 的生命周期,并且在 Fragment 被销毁时不会调用 onCleared()。
所以我想知道如何让它再次工作?
【问题讨论】:
标签: android android-fragments android-architecture-components android-viewmodel koin