我使用 Koin 作为依赖注入库来创建 ktor HttpClient:
val AppModule = module {
single { provideClientService() }
}
fun provideClientService(preferences: SharedPreferences): HttpClient {
install(Auth){
bearer {
loadTokens {
BearerTokens(sharedPreferences.getString("accessToken",""))
}
}
}}
但是用户登录后,accessToken 没有更新。
我认为这是因为 koin 中的范围不同。 koin中有3种作用域:
单一定义:创建一个在整个容器生命周期内持续存在的对象(无法删除)。
工厂定义:每次创建一个新对象。寿命短。容器中没有持久化(无法共享)。
作用域定义:创建一个与关联作用域生命周期持久绑定的对象。
所以我将客户端定义更改为factory,因为我希望在获得新令牌后更新它。现在我想知道这是正确的吗?
val AppModule = module {
factory { provideClientService() }
}