package com.hyrt.cei.util; import com.hyrt.cei.application.CeiApplication; import com.hyrt.cei.vo.ImageResourse; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; public class AsyncImageLoader { private CeiApplication app; public AsyncImageLoader(CeiApplication app) { this.app = app; } public void loadDrawable(final ImageResourse imageResourse, final ImageCallback imageCallback) { final Handler handler = new Handler() { public void handleMessage(Message message) { imageCallback.imageLoaded((Drawable) message.obj, imageResourse.getIconUrl()); } }; // 建立新一个新的线程下载图片 final Runnable runnable = new Runnable() { @Override public void run() { //去数据库中查是否存在该图片 Drawable drawable; ImageResourse oldImageResource = app.dataHelper.getImageResource(imageResourse.getIconId(),imageResourse.getType()); if(oldImageResource != null){ //如果数据库中存在该图片的话 if(oldImageResource.getIconTime(). equals(imageResourse.getIconTime()==null?"":imageResourse.getIconTime())){ //如果图片没变化的话 drawable = oldImageResource.getIcon(); Message message = handler.obtainMessage(0, drawable); handler.sendMessage(message); }else{ //如果图片变化的话则更新图片 try { drawable = ImageUtil.getDrawableFromUrl(imageResourse.getIconUrl()); //如果图片没下载下来的话 if(drawable == null){ drawable = oldImageResource.getIcon(); }else{ //如果图片下载下来的话则更新数据库 imageResourse.setId(oldImageResource.getId()); imageResourse.setIcon(drawable); app.dataHelper.updateImageResource(imageResourse); Message message = handler.obtainMessage(0, drawable); handler.sendMessage(message); } } catch (Exception e) { e.printStackTrace(); } } }else{ //如果数据库中不存在该图片的话 try { drawable = ImageUtil.getDrawableFromUrl(imageResourse.getIconUrl().replace("61.233.18.68", "192.168.10.248")); if(drawable != null){ imageResourse.setIcon(drawable); app.dataHelper.saveImageResource(imageResourse); Message message = handler.obtainMessage(0, drawable); handler.sendMessage(message); } } catch (Exception e) { e.printStackTrace(); } } } }; new Thread(runnable).start(); } // 回调接口 public interface ImageCallback { public void imageLoaded(Drawable imageDrawable, String imageUrl); } }