/**
   * download image from url through the Internet
   *
   * @param url
   * @return Bitmap from http
   */
  private Bitmap getImageHttp(String url) {
    // try to get image from file cache
    //    	Logger.debug(this, "Load image from network " + url);
    Bitmap bitmap;
    int times = 0;
    while (times < IMAGE_RETRY_TIMES) {
      try {
        URL u = new URL(url);
        HttpURLConnection conn = (HttpURLConnection) u.openConnection();
        conn.setDoInput(true);
        conn.connect();
        InputStream inputStream = conn.getInputStream();

        BitmapFactory.Options opt = new BitmapFactory.Options();
        opt.inPreferredConfig = Bitmap.Config.RGB_565;
        opt.inPurgeable = true;
        opt.inInputShareable = true;

        InputStream is = new FlushedInputStream(inputStream);
        bitmap = BitmapFactory.decodeStream(is, null, opt);
        is.close();
        inputStream.close();
        return bitmap;
      } catch (Exception e) {
        Logger.w("getImageHttp=" + url + e);
        times++;
      }
      continue;
    }
    return null;
  } // end of downloadBitmap
  /**
   * download image from url through the Internet
   *
   * @param fileName
   * @return Bitmap from http
   */
  private Bitmap getImageFromHttp(String fileName) {
    // try to get image from file cache
    //    	Logger.debug(this, "Load image from network " + fileName);
    Bitmap bitmap = null;
    int times = 0;
    String urlString = ApiService.getDownloadPictureUrl();
    InputStream in = null;

    String[] strArray = fileName.split("_");

    JSONObject request = ApiService.getDownloadPicJson(strArray[0], mContext);
    //		HttpClient client = new DefaultHttpClient();
    HttpClient client = AsyncHttpClient.getDefaultHttpClient(); // https request
    HttpPost req = new HttpPost(urlString);

    while (times < IMAGE_RETRY_TIMES) {
      try {

        req.setHeader("Content-Type", "application/json;charset=UTF8");
        req.setEntity(new StringEntity(request.toString()));
        HttpResponse response = client.execute(req);
        if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
          in = new BufferedInputStream(response.getEntity().getContent());
          BitmapFactory.Options opt = new BitmapFactory.Options();
          opt.inPreferredConfig = Bitmap.Config.RGB_565;
          opt.inPurgeable = true;
          opt.inInputShareable = true;

          InputStream is = new FlushedInputStream(in);
          bitmap = BitmapFactory.decodeStream(is, null, opt);
          is.close();
          in.close();
        } else {
          Logger.d(LOG_TAG + "_" + "error: " + response.getStatusLine().getStatusCode());
        }

        return bitmap;
      } catch (Exception e) {
        Logger.w("getImageHttp=" + fileName + e);
        times++;
      }
      continue;
    }
    return null;
  } // end of downloadBitmap
  public static void refreshDataSet(List<App> appList) {
    if (appList != null) {

      appListDataSource.clear();
      appListDataSource.addAll(appList);
    }

    if (updateAppListAdapter != null) {
      updateAppListAdapter.notifyDataSetChanged();
    }
    Logger.d("refresh update software successfull!");
  }
 /**
  * Download the specified image from the Internet and binds it to the provided ImageView. The
  * binding is immediate if the image is found in the cache and will be done asynchronously
  * otherwise. A null bitmap will be associated to the ImageView if an error occurs.
  *
  * @param url The URL of the image to download.
  * @param imageView The ImageView to bind the downloaded image to.
  */
 @Deprecated
 public void download(BindHolder holder, Callback callback) {
   String url = holder.getUrl();
   if (null == url || "".equals(url)) {
     return;
   }
   // TO DO :  sbh : don't store bitmap object in cache , use local files (compressed cache)
   // Bitmap bitmap = imageMemoryCache.getBitmapFromCache(url);
   Bitmap bitmap = mLruMemoryCache.get(url);
   if (bitmap == null) {
     executorService.submit(new ImageTask(new ImageTaskHandler(callback), url, holder));
   } else {
     Logger.d(" return image from the cache, " + bitmap + "  from url =" + url);
     holder.setResource(bitmap);
     callback.callback(holder);
   }
 }