【发布时间】:2020-11-11 10:11:37
【问题描述】:
我在我的应用模块中使用 Koin 2.1.6。这是我使用的人工制品
implementation "org.koin:koin-android:2.1.6"
implementation "org.koin:koin-core:2.1.6"
implementation "org.koin:koin-androidx-viewmodel:2.1.6"
implementation "org.koin:koin-androidx-fragment:2.1.6"
Koin 模块是
val userModule = module {
viewModel { (handle: SavedStateHandle) -> UserViewModel(get(), handle) }
}
class UserViewModel(
val iService: IService, //injected from core module
val handle: SavedStateHandle
) : ViewModel()
我在UserFragment上使用这个ViewModel
private val viewModel: UserViewModel by stateViewModel()
UserFragment 包含一个内部片段-UserUpdates,从布局膨胀,共享上述ViewModel。
<fragment android:name="UserUpdates"
android:id="@id/fragment_user_updates"
android:width="match_parent"
android:height="wrap_content" />
在UserUpdates 片段上,我将ViewModel 设置如下
private val viewModel: UserViewModel by stateSharedViewModel()
但是,我发现生成的 ViewModel 实例不是共享的。事实上,它们是作为新对象创建的。有什么我想念的吗?
【问题讨论】:
标签: android kotlin android-viewmodel android-mvvm koin