【问题标题】:How do I set the number of concurrent requests when building an OkHttpClient?构建 OkHttpClient 时如何设置并发请求数?
【发布时间】:2019-03-18 01:11:54
【问题描述】:

背景

我正在构建一个 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。

我知道的

  1. 我知道有一个名为 dispatcher() 的方法可以链接到 OkHttpClient.Builder() 旁边,如上所示。

  2. 我知道Dispatcher 类有一个方法setMaxRequests() 可以完全完成我想做的事情。

我不知道的事情

构建 OkHttpClient for Retrofit 时如何设置最大并发线程数?

【问题讨论】:

    标签: android retrofit2 okhttp


    【解决方案1】:

    您需要创建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();
    

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 2017-02-13
      • 2013-07-07
      • 2020-06-04
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 2017-01-19
      相关资源
      最近更新 更多