завершение работы пула соединений Android

#android #httpclient

#Android #httpclient

Вопрос:

У меня есть класс для Httpclient. Один и тот же экземпляр используется во всем приложении. Таким образом, если клиент == null, он должен создать еще один, он вернет существующий экземпляр. Все работает, пока я не попытаюсь освободить ресурс при выходе, выполнив: client.getConnectionManager().shutdown();…. после этого я не могу снова войти в систему. Выдает системную ошибку с надписью: завершение работы пула соединений. Вот класс:

 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(), кто-нибудь, пожалуйста, может мне помочь

Ответ №1:

Хорошо .. я нашел решение…Я не устанавливал его обратно в значение null, и предполагается, что завершение работы соединения выполняется в том же глобальном классе…

Ответ №2:

Я столкнулся с аналогичной проблемой, но установил

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

не удалось устранить проблему.

Наконец, я обнаружил, что я закрыл все соединения в onPostExecute, что неверно, поэтому после перемещения их в doInBackground это работает.

Надеюсь, это кому-то поможет!

Комментарии:

1. зачем нужен client.getConnectionManager() = null? Левая часть назначения должна быть переменной