【发布时间】:2016-05-19 09:29:45
【问题描述】:
我知道最好使用单例模式来改造对象。我通常会重用服务接口对象而不是改造。
@Provides
@Singleton
RestAPIService providesRestAPIService(Retrofit retrofit) {
return retrofit.create(RestAPIService.class);
}
但是,现在我的项目中有一个要求,我对每个不同的端点都有不同的 KPI(提交 API 使用 40 秒读取超时,而检索 API 使用 10 秒,验证 API 使用 20 秒读取超时)。
那么在多重差异读取超时场景中使用 DI 的正确方法是什么?我应该创建多个 Okhttp 实例还是多个 Retrofit 实例或多个 API 实例?
【问题讨论】:
-
而不是直接设置值,您可以创建一个类,并在该类中为超时定义一个初始值并为其创建一个 getter 和 setter,并通过此 getter 设置超时,当您需要更改超时设置其他超时彻底设置器
-
使用工厂,为不同的 kpi 创建单独的 okhttp 实例。使用单例的风险太大,因为一个线程可能使用具有一个超时值的所述单例,而另一个线程使用不同的超时值。
标签: android retrofit okhttp dagger