Mat*_* H. 7 android kotlin koin
我正在尝试使用Koin创建用户范围。记录用户时,我正在创建范围:
val scope = getKoin().createScope("USER_SCOPE")
Run Code Online (Sandbox Code Playgroud)
当用户单击注销时,我正在破坏范围
scope?.let {userScope ->
userScope.close()
getKoin().deleteScope(userScope.id)
}
Run Code Online (Sandbox Code Playgroud)
在我的koin模块中,我有一个scopedUserRepository,它只能在用户会话期间使用。我也有使用此存储库的ViewModels和Use Cases,我尝试将存储库注入scoped其中
val appModule = module {
scoped<UserRepository> { UserDataRepository() }
viewModel { UserViewModel(getScope("USER_SCOPE").get()) }
factory { MyUseCase(getScope("USER_SCOPE").get()) }
}
Run Code Online (Sandbox Code Playgroud)
第一次登录时,它可以正常工作,我在视图模型和用例中注入了用户存储库。但是在注销(删除作用域)之后和再次登录后,UserRepository实例仍然完全相同。
我会在示波器用法中错过某些东西吗?
从 koin 迁移2.0.0-rc-2到 koin2.0.0-GA解决了我的问题。
迁移后,无法scoped在scope. 所以我采用了appmodule这种方式:
val appModule = module {
scope(named("USER_SCOPE")) {
scoped<UserRepository> { UserDataRepository() }
}
viewModel { UserViewModel(getScope("USER_SCOPE").get()) }
factory { MyUseCase(getScope("USER_SCOPE").get()) }
}
Run Code Online (Sandbox Code Playgroud)
范围声明也有点不同:
val scope = getKoin().createScope("USER_SCOPE", named("USER_SCOPE"))
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我UserRepository在注销/登录后重新创建。
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |