2011-04-05 75 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