【发布时间】:2016-07-29 15:07:56
【问题描述】:
我正在尝试使用使用 Dagger 2 的 Retrofit 2.0 执行登录操作
这是我设置 Retrofit 依赖项的方法
@Provides
@Singleton
Retrofit provideRetrofit(Gson gson, OkHttpClient client) {
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson)
.client(client)
.baseUrl(application.getUrl())
.build();
return retrofit;
}
这是 API 接口。
interface LoginAPI {
@GET(relative_path)
Call<Boolean> logMe();
}
我有三个不同的用户可以登录的基本 URL。所以我在设置改造依赖项时无法设置静态 url。我在 Application 类上创建了 setUrl() 和 getUrl() 方法。用户登录后,我在调用 API 调用之前将 url 设置到 Application 上。
我使用惰性注入进行这样的改造
Lazy<Retrofit> retrofit
这样,Dagger 只有在我可以调用时才注入依赖
retrofit.get()
这部分效果很好。我将 url 设置为改造依赖项。但是,当用户输入错误的基本 url(例如 mywifi.domain.com),理解它是错误的并更改它(例如 mydata.domain.com)时,就会出现问题。由于 Dagger 已经为改造创建了依赖项,它不会再这样做了。 所以我必须重新打开应用程序并输入正确的网址。
我阅读了使用 Dagger 在 Retrofit 上设置动态 url 的不同帖子。在我的情况下,没有什么事情真的很顺利。我想念什么吗?
【问题讨论】:
标签: android dagger-2 retrofit2