AsyncTask download image by the Android

開發Android時常需要呈現圖片,但不可能圖片都是從Drawable中撈出來,一定有時需要從ImageServer或是透過網址取得圖片。

若是用一般的方式解決

try {
  URL url = new URL(imageUrl);
  HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  connection.setDoInput(true);
  connection.connect();
  InputStream input = connection.getInputStream();
  Bitmap bitmap = BitmapFactory.decodeStrea (input);
  return bitmap;
} catch (IOException e) {
  e.printStackTrace();
  return null;
}

這樣子會造成讀取完圖片才會往下繼續執行的窘境,如果Timeout那畫面會停留更久。所以要用AsyncTask的特性來實作這個功能。

Android 4.0之後為了避免跟網路溝通時造成畫面停滯的問題,在與網路溝通的程式碼中必須要用執行緒的方式來進行與網路的溝通。

建立ImageDownloadTask

先在AndroidManifest.xml開啟網路權限

為了避免在短時間內下載重複的圖片,所以用url當作key做了cache的機制imageCache.put(params[0], mIcon11),只要cache中不超過空間限制,都不會重複向遠端撈取圖片。

用起來很簡單

Oct 18th, 2013 12:22:00am

Last updated

Was this helpful?