我正在使用像ksoap这样的长轮询技术:
HttpTransportSE getMessagesTransport = new HttpTransportSE(URL, 60000);
getMessagesTransport.call(SOAP_ACTION, envelope);
如果我只有一次同时调用 Web服务,它工作正常。 ,但如果我在请求另一个Web服务时调用另一个Web服务,在另一个结束之前不会调用。
似乎端口80在Android客户端中被阻止,只允许向 domain:port (domain:80)
有没有办法增加连接数?
(我preafear不使用Comet arquitechture或Asyn WebServices)。
谢谢!
答案 0 :(得分:0)
问题是我正在调用2个异步任务,如果android> = HONEYCOMB的版本你必须在线程池中执行异步任务,因为一个锁定到其他任务:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
new SendMessageToEventAsync(this, formattedMessageToSend)
.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "");
} else {
new SendMessageToEventAsync(this, formattedMessageToSend)
.execute("");
答案 1 :(得分:0)
我创建了一个通用类,忘了我们的版本。当我们创建AsyncTask时,我们总是扩展AsyncTaskThreadPool。希望它能帮到你!
public abstract class AsyncTaskThreadPool<T1, T2, T3> extends AsyncTask<T1, T2, T3> {
public void ExecuteThreadPool(T1 param)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
this.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, param);
} else {
this.execute(param);
}
}
protected abstract T3 doInBackground(T1... params);
}