Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 具有相同目的服务的并行下载_Android - Fatal编程技术网

Android 具有相同目的服务的并行下载

Android 具有相同目的服务的并行下载,android,Android,我有一个Intent服务,可以处理一些文件的下载和解压。 现在我尝试使用这个相同的意图服务来下载同步文件,但是当我尝试启动第二次下载时,它只是将新的下载排队,我怎么能不将我的下载排队呢 Intent service = new Intent(getActivity(), DownloadAndUnzipService.class); service.putExtra("post", false); service.putExtra("url", htmlUrlDownload); servic

我有一个Intent服务,可以处理一些文件的下载和解压。 现在我尝试使用这个相同的意图服务来下载同步文件,但是当我尝试启动第二次下载时,它只是将新的下载排队,我怎么能不将我的下载排队呢

Intent service = new Intent(getActivity(), DownloadAndUnzipService.class);

service.putExtra("post", false);
service.putExtra("url", htmlUrlDownload);
service.putExtra("filePath", filePath);
service.putExtra("destinationPath", destinationPath);
service.putExtra("receiver", mReceiver);
service.putExtra("typeDownload", Constants.HTML);
service.putExtra("metaDado", downloadContent.getMetaDado());
service.putExtra("isResuming", false);

getActivity().startService(service);

我没有放DownloadAndUnzipService代码,因为它太长了,我认为它不会有帮助,但如果有帮助,我可以更新它。

如果DownloadAndUnzipService是IntentService的子类,这是预期的行为

rea更多一点在:


如果您想要并行下载,您需要自行管理后台线程

IntentService
专门设计用于排队多个调用,并一次运行一个

i、 它工作100%正确,但不幸的是你的设计是错误的

您应该研究像
ThreadPoolExecutor
这样的东西,它将使您能够从一个线程池同时运行多个
Runnables

您还将看到一些很好的示例代码。另外,我知道马克·墨菲的电子书有一些很好的并行下载代码


我不确定你是否需要将其投入到实际的
服务中
,或者你是否可以将其保留在你的
活动中
——这取决于你的确切目标。

如果你想使用相同的DownloadAndUnzipService对象,你必须在那里处理它,因此它的代码会有所帮助。也许您可以缩短它。您知道是否可以继续使用ResultReceiver与我的活动通信一个标准线程?