Android DefaultHttpClient阻止不同的线程

Android DefaultHttpClient阻止不同的线程,android,multithreading,apache-httpclient-4.x,Android,Multithreading,Apache Httpclient 4.x,我有一个带有后台服务的Android应用程序,可以向HTTP服务器发送信息。在前台,我有一个活动,用于获取用户界面的信息。两者都使用从AsyncTask继承的doSending类来进行实际通信 在这个doSending类中,我实例化了一个DefaultHttpClient来运行通信。但是,“前台”通信(由用户触发)似乎被“后台”通信(由计时器触发)阻止 DefaultHttpClient在应用程序范围内一次只能有一个连接是真的吗?如果是这样,我如何使这个多连接?您确定只有一个运行实例的是Http

我有一个带有后台服务的Android应用程序,可以向HTTP服务器发送信息。在前台,我有一个
活动
,用于获取用户界面的信息。两者都使用从
AsyncTask
继承的
doSending
类来进行实际通信

在这个
doSending
类中,我实例化了一个
DefaultHttpClient
来运行通信。但是,“前台”通信(由用户触发)似乎被“后台”通信(由计时器触发)阻止


DefaultHttpClient
在应用程序范围内一次只能有一个连接是真的吗?如果是这样,我如何使这个多连接?

您确定只有一个运行实例的是HttpClient而不是AsyncTask吗?如果我没有记错的话,AsyncTask的默认线程池(不幸的是)有一个与之关联的线程,这意味着在任何给定时间只能运行一个活动的AsyncTask

要修复此问题,您可以尝试以下方法:

asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params); 
请查看此链接以供参考:


特别是这句话:
如果您的android:targetSdkVersion设置为13或更高,并且您运行的是android 4.x或更高版本,AsyncTask将使用一个执行器,一次只执行一个任务

您确定只有一个运行实例的是HttpClient而不是AsyncTask吗?如果我没有记错,AsyncTask的默认线程池(很遗憾)有一个线程与之关联,这意味着在任何给定时间只能运行一个活动的AsyncTask。@kha我不确定。它当然也可能是异步任务池。我能调高一点吗?刚刚检查过,很可能是AsyncTask是。您可以尝试以下操作:
AsyncTask.executeOnExecutor(AsyncTask.THREAD\u POOL\u EXECUTOR,params)
查看此链接以供参考:特别是这句话:
如果您的android:targetSdkVersion设置为13或更高,并且您运行的是android 4.x或更高版本,AsyncTask将使用一个执行器,一次只执行一个任务
@kha,这将修复此问题。如果你回答,我会接受。试试这个,它会处理你的任务并行asyncTask.executeOnExecutor(asyncTask.THREAD\u POOL\u EXECUTOR);
Telegram t = new Telegram();
new doSending().execute(t);
asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);