Android:Retrofit:如何正确执行大量异步请求

时间:2016-05-23 20:48:21

标签: java android http retrofit retrofit2

我在Android客户端中使用了改装2.x.在我的特殊情况下,我想要异步上传> 500个图片对象(实际上是文件)。

如果pictureList大小<50,那么上传所有这些文件都没问题。

   for (Picture pic : pictureList) {
        uploadPictureAsync(pic)

但是当大小超过100时,我的测试设备正在中止,并显示以下错误消息:

  

大对象分配失败:ashmem_create_region因大而失败   对象空间分配&#39;:打开文件太多

这似乎是由太多的异步请求引起的。

现在的问题是:我如何处理如此大量的请求?

1 个答案:

答案 0 :(得分:0)

首先,确保您拥有Retrofit服务的单个实例(如果您使用它)(而不是每次需要进行调用时进行延迟实例化),您将获得“打开的文件太多”错误。

稍后,如果您需要上传此数量的图片,我建议您按照有关ThreadPoolExecutors的Android文档来管理使用BlockingQueue的异步调用。

https://developer.android.com/training/multiple-threads/create-threadpool.html