使用OkHttp同时执行异步请求

时间:2015-02-26 04:00:05

标签: android networking okhttp

我的应用程序正在使用长轮询来保持某些本地状态是最新的,但它还需要与服务器通信,同时独立/同时维护长轮询连接。

麻烦的是,OkHttp在等待长轮询连接接收数据或超时时阻止对服务器的任何其他调用。

我已经设置了两个OkHttpClient实例,一个用于服务器的正常API调用,另一个用于维护长轮询连接。

private static OkHttpClient client = new OkHttpClient();
private static OkHttpClient longPollingClient = new OkHttpClient();

我已经尝试让长轮询客户端设置自己的连接池(与默认的共享连接池分开)

ConnectionPool connectionPool = new ConnectionPool(
    LONG_POLL_CLIENT_CONNECTION_POOL_MAX_CONNECTIONS, // 5
    LONG_POLL_CLIENT_CONNECTION_POOL_KEEP_ALIVE_DURATION_MILLIS // 5 mins
);
longPollingClient.setConnectionPool(connectionPool);

我还有调度员的说法:

longPollingClient.getDispatcher().setMaxRequests(5);
longPollingClient.getDispatcher().setMaxRequestsPerHost(5);

但无论如何,client

阻止了对longPollingClient的调用

注意,我正在为我的呼叫使用单独的AsyncTasks。 AsyncTask是否在线程池中共享一个线程?我对Android比较陌生,所以我不确定。

0 个答案:

没有答案