2011-04-05 18 views
8

我有一個Httpclient的類。在整個應用程序中使用相同的實例。所以如果客戶端== null,它應該創建一個其他的它將返回現有的實例。一切工作,直到我試圖通過執行釋放退出資源:client.getConnectionManager()。shutdown(); ....在此之後,我無法再次登錄。它給Sysem錯誤說:連接池關閉。繼承人類:連接池關機android

public class HttpClientFactory { 
    private static DefaultHttpClient client;   
    public synchronized static DefaultHttpClient getThreadSafeClient() { 
    if (client != null) 
     return client; 

    client = new DefaultHttpClient(); 
    SchemeRegistry schemeRegistry = new SchemeRegistry(); 
    schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
    schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); 
    HttpParams params = new BasicHttpParams(); 
    SingleClientConnManager mgr = new SingleClientConnManager(params, schemeRegistry); 
    client = new DefaultHttpClient(mgr, params); 

    return client; 
} 
} 

之後,我只需運行client.getConnectionManager()。shutdown(); onBackPressed(),有人可以幫我

回答

5

Ok..i得到了解決......我沒有設置回空和連接關閉是假設在同一個全局類做...

3

我曾遇到過類似的問題,但設置爲

client.getConnectionManager().shutdown() 
client.getConnectionManager() = null 

無法解決問題。

最後,我發現,我沒有關閉所有連接onPostExecute,這是不正確,所以他們移動到doInBackground後,它的工作原理。

希望這可以幫助別人!

+0

爲什麼需要client.getConnectionManager()= null?賦值的左側必須是一個變量 – juejiang 2014-07-15 14:19:56