私のアプリでは、同時に複数のファイルのダウンロードを処理したいと考えています。そのために、リクエストごとに 1 つずつ、いくつかのサービスを開始しています。よくわかりませんが、Android は同時 http リクエストを並行してサポートしていますか?
その場合、リクエストごとに 1 つの HTTPClient を持つのは良い習慣ですか、それとも悪い習慣ですか?
助けてくれて本当にありがとうございます!
私のアプリでは、同時に複数のファイルのダウンロードを処理したいと考えています。そのために、リクエストごとに 1 つずつ、いくつかのサービスを開始しています。よくわかりませんが、Android は同時 http リクエストを並行してサポートしていますか?
その場合、リクエストごとに 1 つの HTTPClient を持つのは良い習慣ですか、それとも悪い習慣ですか?
助けてくれて本当にありがとうございます!
HttpClient は非同期ではなく、並列接続自体をサポートしていません。個別の HttpClient インスタンスを使用して、それぞれがダウンロードを実行する複数のスレッドを持つことができます。
ExecutorService も参照してください: http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
などのプーリング接続マネージャーを装備すると、ThreadSafeClientConnManager
複数HttpClient
の実行スレッドを使用して複数の要求を同時に実行するために使用できます。
これを使用する方法の完全な例を次に示します: 2.9. マルチスレッド リクエストの実行。
更新: しばらく時間がかかりましたが、現在は廃止されています (以下のApache Http Client RemovalThreadSafeClientConnManager
からの抜粋を参照してください)。
Android 6.0 リリースでは、Apache HTTP クライアントのサポートが削除されています。アプリがこのクライアントを使用していて、Android 2.3 (API レベル 9) 以降を対象としている場合は、代わりに HttpURLConnection クラスを使用してください。この API は、透過的な圧縮と応答キャッシュによってネットワークの使用を減らし、電力消費を最小限に抑えるため、より効率的です。
いくつかのテストを行って、いくつの同時 HTTPRequest が適切に機能するかを判断してください。
複数のサービスではなく、1 つのサービスを開始し、多くのスレッドを持つことをお勧めします。