背景
我正在建立一个改造客户。作为这个客户机的一部分,我还在其中构建一个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;
}

我想要什么
我想建立一个okhttpclient,一次只允许一个并发线程。
我所知道的
我知道有一个名为dispatcher()的方法可以链接到okhttpclient.builder()旁边,如上图所示。
我知道Dispatcher类有一个方法setMaxRequests()可以完成我想做的事情。
我不知道的是
在构建用于改造的okhttpclient时,如何设置最大并发线程数?

最佳答案

您需要创建Dispatcher类的实例并将其传递给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();

关于android - 构建OkHttpClient时如何设置并发请求数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52785707/

10-11 14:32