Дорого ли создается HttpClient? - PullRequest
2 голосов
/ 06 января 2012

Я видел несколько примеров того, как в Android реализована функция MaybeCreateHttpClient (), особенно в примере Google, которая проверяет, создан ли объект HttpClient, если нет, создает его и повторно использует.этот подход?Дорого ли создается новый HttpClient?

Ответы [ 2 ]

3 голосов
/ 06 января 2012

Используйте пул соединений (например, ThreadSafeClientConnManager) для управления своими клиентами.

HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue(params, true);

SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));

ClientConnectionManager connman = new ThreadSafeClientConnManager(params, registry);
client = new DefaultHttpClient(connman, params);

client - это одноэлементный объект, который можно использовать повторно для запуска запроса:

HttpResponse response = client.execute(new HttpGet(URL));
0 голосов
/ 06 января 2012

HttpClient - довольно большой и сложный объект. Вы можете сделать десятки (или, возможно, больше) HTTP-звонков в вашем приложении. Если вы создадите новый для каждого http-запроса, вы быстро столкнетесь с проблемами памяти и наверняка заметите замедление сбора мусора.

http-клиент - это общий компонент, который поможет вам совершать http-вызовы, просто используйте его повторно. Там нет причин, не слишком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...