在我的安卓应用程序中,我必须从服务器并行y获取近50个数据(50 AsyncTask
(。所以我通过使用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
来实现我的逻辑。我读到executeOnExecutor
一次只能运行 5 AsyncTask
,并且它的队列大小为 10。我们最多可以保留 10 个待处理AyncTask
.好的,现在在我的场景中,我有 50 个AsyncTask
并且我无法并行执行 50 AsyncTask
,因为队列的大小只有 10。所以我不能采用一起执行 50 AsyncTask
的方法。
所以我想出了另一个逻辑,在那里我将一起创建和执行 5 个AyncTask
。我将在每个已执行AsyncTask
的回电中启动新AysncTask
.
第二个逻辑满足了我的要求。它正在完美地工作。
注意:在这里我使用的是我自己的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
数是多少?
原来你正在使用的这个库使用了一个 CachedThreadPool:http://www.blogjava.net/dashi99/archive/2012/08/06/384885.html
这意味着,如果您执行大量请求,它将创建线程来相应地执行它们。 如果线程空闲且未关闭,它将为请求重用线程。因此,我认为这意味着您的所有请求都将并行运行。