创建HttpClient是否昂贵?

时间:2012-01-06 09:48:22

标签: android httpclient

我在Android中看到了一些例子:maybeCreateHttpClient(),特别是在Google示例中,它确实检查HttpClient对象是否被实例化,如果没有,则实例化它,并重用它。

为什么这种做法?创建新的HttpClient是否昂贵?

2 个答案:

答案 0 :(得分:3)

使用连接池(例如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));

答案 1 :(得分:0)

HttpClient是一个相当庞大且复杂的对象。您可以在应用中进行数十次(或可能更多)的http呼叫。如果你为每个http请求创建了一个新的,你会很快遇到内存问题,并且肯定会注意到垃圾收集减慢。

http客户端是一个通用组件,可以帮助您进行http调用,只需重用它即可。没有理由不这样做。