使用Android异步Http客户端库并行执行http请求

时间:2013-10-12 17:04:03

标签: android http apache-httpclient-4.x asynctaskloader android-async-http

在我的Android应用程序中,我必须从服务器并行y获得近50个数据(50 AsyncTask)。所以我使用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);实现了我的逻辑。我读到了executeOnExecutor,它一次只能运行5 AsyncTask,并且它有一个大小为10的队列。我们可以保留最多10个等待AyncTask。好的,现在在我的场景中我有50 AsyncTask并且我不能同时并行执行50 AsyncTask因为队列的大小只有10.所以我不能继续执行50 {{{ 1}}在一起。

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

第二个逻辑满足了我的要求。它工作得很好。

注意:这里我使用自己的AsyncTask类,我正在使用Apache http客户端发出http请求。

现在,我刚刚听说了一个名为android-async-http的图书馆。我想用这个库重新实现上面的逻辑。

示例代码:

AsyncTask

所以我的问题是,

  • 如何使用android-async-http库执行http请求并行y?

  • 使用此库可以执行并行y的AsyncHttpClient client = new AsyncHttpClient(); client.get("http://www.google.com", new AsyncHttpResponseHandler() { @Override public void onSuccess(String response) { System.out.println(response); } }); 的最大数量是多少?

1 个答案:

答案 0 :(得分:0)

原来这个你正在使用的库使用CachedThreadPool: http://www.blogjava.net/dashi99/archive/2012/08/06/384885.html

这意味着如果执行大量请求,它将创建相应执行它们的线程。如果线程空闲且没有关闭,它将为请求重用线程。所以我认为这意味着你的所有请求都会并行运行。