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