06/09/17 12:03:52 D:\Users\kino.yan\Desktop\Android\temp\ImageLoader2.java 1 /** 2 * 图片加载类 3 */ 4 public class ImageLoader { 5 // 图片缓存 6 ImageCache mImageCache = new ImageCache(); // ImageCache 是自定义类 7 // 线程池,线程数量为 CPU 的数量 8 ExecutorService mExecutorService = Executors.newFixedThreadPool(RunTime.getRuntime().availableProcessors()); 9 10 // 加载图片 11 public void displayImage(final String url, final ImageView imageView) { 12 // 优先使用缓存 13 Bitmap bitmap = mImageCache.get(url); 14 if(bitmap != null){ 15 imageView.setImageBitmap(bitmap); 16 return; 17 } 18 imageView.setTag(url); 19 // 使用线程池 20 mExecutorService.submit( 21 new Runnable(){ 22 @Override 23 public void run(){ 24 Bitmap bitmap = downloadImage(url); 25 if(bitmap == null) 26 return; 27 if(imageView.getTag().equals(url)) 28 imageView.setImageBitmap(bitmap); 29 // 存入缓存 30 mImageCache.put(url, bitmap); 31 } 32 } 33 ); 34 } 35 36 /** 37 * 下载图片,在加载图片方法中调用 38 */ 39 public Bitmap downloadImage(String imageUrl) { 40 Bitmap bitmap = null; 41 try{ 42 URL url = new URL(imageUrl); 43 final HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 44 bitmap = BitmapFactory.decodeStream(conn.getInputStream()); 45 conn.disconnect(); 46 }catch(Exception e){ 47 e.printStackTrace(); 48 } 49 return bitmap; 50 } 51 }