web-dev-qa-db-ja.com

Retrofitを使用した並列HTTPリクエスト

Androidアプリケーションは、現在Volleyライブラリを使用してネットワークリクエストを行い、ダウンロードした画像をNetworkImageViewで表示しています。

Retrofitの機能をテストしたいと思います。多くのリクエスト(数千)を実行する必要があるため、並列実行について少し心配しています。 Volleyは、同時実行リクエストを4つに制限するRequestQueueを使用して並列リクエストを処理し、他のリクエストは実行されるのを待ってキューに入れられます。 Retrofitのドキュメントでは、同時リクエストの数を処理する方法が見つかりませんでした。そのような詳細は、このライブラリの開発者に任されていると思います。

これは正しいです?もしそうなら、Android指向の実装/ライブラリはありますか?それ以外の場合、並列リクエストを処理するためのベストプラクティスは何ですか?

19
Vektor88

Retrofitは、キューイング要求にExecutorを使用します。

デフォルトではExecutors.newCachedThreadPoolを使用し、無制限のスレッドを許可します。通常、一度に1つか2つのリクエストしか発生しないため、これはほとんどのユースケースに当てはまります。

ただし、RestAdapterを作成するときに独自の動作を指定することで、この動作を変更できます。 setExecutors を呼び出し、制限されたスレッドプールを使用するエグゼキュータを渡します(必要な数に制限されます)。 2番目の引数については、 MainThreadExecutor の新しいインスタンスを渡すだけで、メインスレッドでコールバックが発生します。

39
Jake Wharton