构建OkHttpClient时如何设置并发请求数?
How do I set the number of concurrent requests when building an OkHttpClient?
背景
我正在构建一个 Retrofit 客户端。作为此客户端的一部分,我还在其中构建了一个 OkHttpClient。下面是我所说的代码:
public static final String BASE_URL = "https://api.darksky.net/forecast/<secret-key>/";
public static final OkHttpClient.Builder httpClient = new OkHttpClient.Builder().dispatcher()
private static Retrofit retrofit = null;
public static DarkSkyEndpoints getClient() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
}
DarkSkyEndpoints endpoints = retrofit.create(DarkSkyEndpoints.class);
return endpoints;
}
我想要的
我想构建一个一次只允许 1 个并发线程的 OkHttpClient。
我所知道的
我知道有一个名为 dispatcher() 的方法可以链接到 OkHttpClient.Builder() 旁边,如上所示。
我知道 Dispatcher class has a method setMaxRequests() 完全可以完成我想做的事情。
我不知道的事
Retrofit构建OkHttpClient时如何设置最大并发线程数?
您需要创建 Dispatcher
class 的实例并将其传递给 dispatcher()
方法。尝试这样的事情:
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(MAX_REQUESTS_NUMBER);
public static final OkHttpClient httpClient = new
OkHttpClient.Builder().dispatcher(dispatcher).build();
....
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient)
.build();
背景
我正在构建一个 Retrofit 客户端。作为此客户端的一部分,我还在其中构建了一个 OkHttpClient。下面是我所说的代码:
public static final String BASE_URL = "https://api.darksky.net/forecast/<secret-key>/";
public static final OkHttpClient.Builder httpClient = new OkHttpClient.Builder().dispatcher()
private static Retrofit retrofit = null;
public static DarkSkyEndpoints getClient() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
}
DarkSkyEndpoints endpoints = retrofit.create(DarkSkyEndpoints.class);
return endpoints;
}
我想要的
我想构建一个一次只允许 1 个并发线程的 OkHttpClient。
我所知道的
我知道有一个名为 dispatcher() 的方法可以链接到 OkHttpClient.Builder() 旁边,如上所示。
我知道 Dispatcher class has a method setMaxRequests() 完全可以完成我想做的事情。
我不知道的事
Retrofit构建OkHttpClient时如何设置最大并发线程数?
您需要创建 Dispatcher
class 的实例并将其传递给 dispatcher()
方法。尝试这样的事情:
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(MAX_REQUESTS_NUMBER);
public static final OkHttpClient httpClient = new
OkHttpClient.Builder().dispatcher(dispatcher).build();
....
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient)
.build();