0

AsyncTask在我的 android 应用程序中,我必须从服务器并行 y获取近 50 个数据(50 个)。所以我通过使用实现了我的逻辑executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);。我读到了executeOnExecutor哪个一次只能运行 5AsyncTask个,它有一个大小为 10 的队列。我们最多可以保留 10 个 pending AyncTask。好的,现在在我的场景中,我有 50 个AsyncTask,我不能AsyncTask并行执行 50 个,因为队列的大小只有 10 个。所以我不能一起执行 50 个AsyncTask

所以我想出了另一个逻辑,在那里我将创建和执行 5AyncTask一起。我将AysncTask在每个已经执行的回调中开始新的AsyncTask

第二个逻辑满足了我的要求。它运行良好。

注意:这里我使用我自己的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 回答