Koin 2 在 Android 项目中创建功能范围的问题



我尝试为功能创建范围。我定义了一个这样的模块。

val appModule = module {
scope(named("ARTIST_SCOPE")) {
scoped {
ArtistRepository(get())
}
scoped {
GetArtistsUseCase(get())
}
viewModel { ArtistViewModel(get()) }
}
}

我的目标是使ArtistRepositoryGetArtistUseCaseArtistViewModel只能在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 关闭的实例,这将获取一个现有实例,或者如果需要,它将创建一个新实例。

最新更新