这竟然是一个乌龙。
DefaultHttpClient 支持并发连接。问题出在我对 AsyncTask 的理解上。一直以为 AsyncTask 的 doInBackground 是完全异步执行,执行完后在 Main Thread 中调用 onPostExecute。
但事实上,从 HonyComb 开始, 多个 AsyncTask 被放入另外一个 background Thread 中,顺序执行了。比如这样MainThread {
AsyncTaks1 (...)
{
doInBackground1{new DefaultHttpClient().execute(...);}
}.execute(...);
new AsyncTaks2 (...)
{
doInBackground2() {new DefaultHttpClient().execute(...)}
}.execute(...);
}
那么 doInBackground2 会在 doInBackground1 函数执行返回后才会继续执行,虽然 mainThread 本身不会卡住。
DefaultHttpClient 支持并发连接。问题出在我对 AsyncTask 的理解上。一直以为 AsyncTask 的 doInBackground 是完全异步执行,执行完后在 Main Thread 中调用 onPostExecute。
但事实上,从 HonyComb 开始, 多个 AsyncTask 被放入另外一个 background Thread 中,顺序执行了。比如这样MainThread {
AsyncTaks1 (...)
{
doInBackground1{new DefaultHttpClient().execute(...);}
}.execute(...);
new AsyncTaks2 (...)
{
doInBackground2() {new DefaultHttpClient().execute(...)}
}.execute(...);
}
那么 doInBackground2 会在 doInBackground1 函数执行返回后才会继续执行,虽然 mainThread 本身不会卡住。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货