我尝试为功能创建范围。我定义了一个这样的模块。
val appModule = module {
scope(named("ARTIST_SCOPE")) {
scoped {
ArtistRepository(get())
}
scoped {
GetArtistsUseCase(get())
}
viewModel { ArtistViewModel(get()) }
}
}
我的目标是使ArtistRepository
、GetArtistUseCase
和ArtistViewModel
只能在Artist Feature
内访问。
在我的活动中
class ArtistActivity : AppCompatActivity() {
private val artistScope = getKoin().createScope("artistScope", named("ARTIST_SCOPE"))
private val viewModel: ArtistViewModel by artistScope.viewModel(this)
...
}
我的问题是当我离开这个活动并返回它时。
我收到此错误。
org.koin.core.error.ScopeAlreadyCreatedException: A scope with id 'artistScope' already exists. Reuse or close it.
enter code here
如何重用现有范围? 或者我是否以正确的方式实现了范围?
你想用getOrCreateScope()
.如果你有一个未使用相同的 scopeId 关闭的实例,这将获取一个现有实例,或者如果需要,它将创建一个新实例。