我正在尝试使用Koin创建用户范围。 当用户登录时,我正在创建该范围:
val scope = getKoin().createScope("USER_SCOPE")
当用户点击注销时,我会销毁该作用域。
scope?.let {userScope ->
userScope.close()
getKoin().deleteScope(userScope.id)
}
在我的koin模块中,我有一个
scoped
UserRepository,它只应该在用户会话期间存在。我还有使用此存储库的ViewModel和Use Cases,并且我尝试在其中注入scoped
repo。val appModule = module {
scoped<UserRepository> { UserDataRepository() }
viewModel { UserViewModel(getScope("USER_SCOPE").get()) }
factory { MyUseCase(getScope("USER_SCOPE").get()) }
}
第一次登录时,一切正常。我的用户仓库已注入到视图模型和用例中。但是在注销后(删除作用域)再次登录后,UserRepository实例仍然完全相同。
我在使用作用域时漏掉了什么吗?
scope
不是空的并且let
块被调用了吗? - tynnscope
变量不为空,并且它正在进入let
块。 - Mathieu H.