4

ファイルのダウンロードと解凍を処理するインテント サービスが 1 つあります。今、この同じインテント サービスを使用して同時ファイルをダウンロードしようとしていますが、2 番目のダウンロードを開始しようとすると、新しいダウンロードがキューに登録されるだけです。ダウンロードをキューに登録しないようにするにはどうすればよいですか?

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 コードは長すぎて役に立たないと思うので入れませんでしたが、役に立ったら更新できます。

4

2 に答える 2

11

IntentService複数の呼び出しをキューに入れ、一度に 1 つずつ実行するように特別に設計されています。

つまり、100% 正しく動作していますが、残念ながら設計が間違っています。

スレッドプールから同時にThreadPoolExecutor複数を実行できるようにするようなものを調べる必要があります。ここで Android のドキュメントを確認してくださいRunnables

また、いくつかの優れたサンプル コードも表示されます。それ以外の場合は、Mark Murphy の電子ブックに並列ダウンロード用の優れたコードが含まれていることは知っています。

それを実際に入れる必要があるのServiceか​​ 、それともあなたの中に入れておくことができるのかはわかりませんActivities-それはあなたの正確な目的に依存します.

于 2013-05-29T15:34:47.643 に答える
2

DownloadAndUnzipService が、予想される動作である IntentService のサブクラスである場合。

詳細については、Intent Service を拡張します。

並列ダウンロードが必要な場合は、Service クラスから拡張し、バックグラウンド スレッドを自分で管理する必要があります。

于 2013-05-29T15:07:48.863 に答える