带有改进的并行HTTP请求


问题内容

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

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

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


问题答案:

改造使用Executor来对请求进行排队。

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

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