带有改进的并行HTTP请求
问题内容:
我有一个Android应用程序,当前正在使用Volley
库来发出网络请求并使用来显示下载的图像NetworkImageView
。
我想测试Retrofit
的功能,由于我需要运行大量请求(数千个),因此我有点担心并行执行。Volley
处理的并行请求,将RequestQueue
并行运行的请求限制为四个,而其他请求排队等待执行。在Retrofit
文档中,我找不到任何方法来处理并发请求的数量,而且我怀疑此类详细信息留给了此库中的开发人员。
这样对吗?如果是这样,是否有任何面向Android的实现/库可用?否则,处理并行请求的最佳实践是什么?
问题答案:
改造使用Executor
来对请求进行排队。
默认使用Executors.newCachedThreadPool
允许无限线程。这适合大多数用例,因为通常您一次只会发生一个或两个请求。
但是,您可以通过在构建时自行提供来更改此行为RestAdapter
。调用setExecutors
并传入使用受限线程池的执行程序(限于您想要的任何数量)。对于第二个参数,只需传递一个新实例,MainThreadExecutor
以便在主线程上发生回调。