2014-05-14 54 views
0

我有两个活动,在启动时都向我的服务器发出不同的http请求。 当我在它们之间来回切换时,响应开始有一些延迟,因为它们在彼此之间排队。Android:空默认HttpClient队列

我想清空并中止这个连接,只保留最新的连接。

我试图

httpClient.getConnectionManager().shutdown(); 

但它抛出

05-14 08:20:51.137 12627-12997/com.tesis.restapp E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #2 
java.lang.RuntimeException: An error occured while executing doInBackground() 
     at android.os.AsyncTask$3.done(AsyncTask.java:278) 
     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
     at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
     at java.lang.Thread.run(Thread.java:856) 
Caused by: java.lang.IllegalStateException: Manager is shut down. 
     at org.apache.http.impl.conn.SingleClientConnManager.assertStillUp(SingleClientConnManager.java:175) 
     at org.apache.http.impl.conn.SingleClientConnManager.getConnection(SingleClientConnManager.java:213) 
     at org.apache.http.impl.conn.SingleClientConnManager$1.getConnection(SingleClientConnManager.java:191) 
     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:326) 
     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:580) 
     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:512) 
     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:490) 
     at support.JSONParser.makeHttpRequest(JSONParser.java:96) 
     at fragments.MainFragment$FetchOrders.doInBackground(MainFragment.java:150) 
     at fragments.MainFragment$FetchOrders.doInBackground(MainFragment.java:129) 
     at android.os.AsyncTask$2.call(AsyncTask.java:264) 
     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)... 

任何其他的想法?谢谢

+0

没有得到你。你想同时开始两个电话? –

+0

我想只将队列保持为一个呼叫。当创建一个新的请求时,我希望应用程序中止以前的所有操作,并从此开始。 – feresr

+0

你试过这个httpclient.getConnectionManager()。closeExpiredConnections(); –

回答

0

只要取消执行HttpRequest的AsyncTask就行了!