Is this a good implementation of DefaultHttpClient and ThreadSafeClientConnManager in Android?
- by johnrock
In my Android app I am sharing one httpclient for all activities/threads. All requests are made by callling getHttpClient().execute(httpget) or  getHttpClient().execute(httppost). 
Is this implementation complete/correct and safe for multiple threads? Is there anything else missing i.e. Do I have to worry about releasing connections at all? 
private static  HttpClient httpclient ;
public static HttpClient getHttpClient() {
if(httpclient == null){
   return getHttpClientNew();
  }
  else{
   return httpclient;
  }
 }
public static synchronized  HttpClient getHttpClientNew() {  
    HttpParams params = new BasicHttpParams();
    ConnManagerParams.setMaxTotalConnections(params, 100);
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, "UTF_8");
HttpProtocolParams.setUseExpectContinue(params, false);
  HttpConnectionParams.setConnectionTimeout(params, 10000);
     HttpConnectionParams.setSoTimeout(params, 10000);
    SchemeRegistry schemeRegistry = new SchemeRegistry();
    schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
 httpclient = new DefaultHttpClient(cm, params);  
return httpclient;
 }
This is an example of how the httpclient is used:
private void update() {
HttpGet httpget = new HttpGet(URL);
     httpget.setHeader(USER_AGENT, userAgent);
     httpget.setHeader(CONTENT_TYPE, MGUtils.APP_XML);
HttpResponse response;
  try {
       response = getHttpClient().execute(httpget);
       HttpEntity entity = response.getEntity();                     
          if (entity != null) {
           // parse stuff
          }
  }      
  catch (Exception e) {
  }
}