0

私のAndroidアプリケーションでは、AsyncTaskサーバーの並列yからほぼ50個のデータ(50)を取得する必要があります。そこで、 を使用してロジックを実装しexecuteOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);ました。一度にexecuteOnExecutor実行できるのは 5 つだけAsyncTaskで、キューのサイズは 10 です。ここで、最大 10 個の pending を保持できAyncTaskます。さて、私のシナリオでは50AsyncTaskがあり、キューのサイズが10しかないため、50AsyncTaskを並行して実行することはできません。したがって、50AsyncTaskを一緒に実行するアプローチには従えません。

別のロジックを思いついたので、AyncTask一緒に 5 を作成して実行します。そしてAysncTask、すでに実行されたそれぞれのコールバックで新しいものを開始しますAsyncTask

2 番目のロジックは、私の要件を満たしました。それは完全に機能しています。

注: ここでは独自のAsyncTaskクラスを使用しており、Apache http クライアントを使用して http 要求を作成しています。

さて、新しくandroid-async-httpというライブラリについて聞きました。このライブラリで上記のロジックを再実装したかったのです。

サンプルコード:

AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {
    @Override
    public void onSuccess(String response) {
        System.out.println(response);
    }
});

だから私の質問は、

  • android-async-httpライブラリを使用して http リクエストを並列に実行するにはどうすればよいですか?

  • AsyncTaskこのライブラリを使用して並列実行できる最大数はいくつですか?

4

1 に答える 1

1

使用しているこのライブラリは CachedThreadPool を使用していることがわかります: http://www.blogjava.net/dashi99/archive/2012/08/06/384885.html

つまり、多くのリクエストを実行すると、それに応じてそれらを実行するスレッドが作成されます。スレッドが空いていてシャットダウンされていない場合は、リクエストに対してスレッドを再利用します。したがって、これはすべてのリクエストが並行して実行されることを意味すると思います。

于 2013-10-12T19:21:59.563 に答える