使用Retrofit进行并行HTTP请求

时间:2014-04-23 21:28:01

标签: java android rest retrofit

我有一个Android应用程序,当前正在使用Volley库来发送网络请求,并使用NetworkImageView显示下载的图像。

我想测试Retrofit的功能,因为我需要运行大量请求(数千),我有点担心并行执行。 Volley使用RequestQueue处理并行请求,将并发运行请求限制为4,而其他请求则排队等待执行。在Retrofit文档中,我还没有找到任何方法来处理并发请求的数量,我怀疑这些详细信息留给了此库中的开发人员。

这是对的吗?如果是这样,是否有任何面向android的实现/库可用?否则,处理并行请求的最佳做法是什么?

1 个答案:

答案 0 :(得分:39)

Retrofit使用Executor排队请求。

默认使用Executors.newCachedThreadPool,允许无限制的线程。这适用于大多数用例,因为通常情况下,您一次只会发生一个或两个请求。

但是,您可以通过在构建RestAdapter时提供自己的行为来更改此行为。调用setExecutors并传入使用受限线程池的执行程序(限制为您想要的任何数字)。对于第二个参数,只需传递MainThreadExecutor的新实例,以便在主线程上发生回调。