通用工具类-异步加载图片&缓存提取

public class AsyncImageLoader {
    //SoftReference是软引用,是为了更好的为了系统回收变量
    private HashMap> imageCache;
    public AsyncImageLoader() {
        imageCache = new HashMap>();
    }
    public Drawable loadDrawable(final String imageUrl,final ImageView imageView, final ImageCallback imageCallback){
        if (imageCache.containsKey(imageUrl)) {
            //从缓存中获取
            SoftReference softReference = imageCache.get(imageUrl);
            Drawable drawable = softReference.get();
            if (drawable != null) {
                return drawable;
            }
        }
        final Handler handler = new Handler() {
            public void handleMessage(Message message) {
                imageCallback.imageLoaded((Drawable) message.obj, imageView,imageUrl);
            }
        };
        //建立新一个新的线程下载图片
        new Thread() {
            @Override
            public void run() {
                Drawable drawable = null;
    try {
     drawable = ImageUtil.geRoundDrawableFromUrl(imageUrl, 20);
    } catch (Exception e) {
     e.printStackTrace();
    }
                imageCache.put(imageUrl, new SoftReference(drawable));
                Message message = handler.obtainMessage(0, drawable);
                handler.sendMessage(message);
            }
        }.start();
        return null;
    }
    //回调接口
    public interface ImageCallback {
        public void imageLoaded(Drawable imageDrawable,ImageView imageView, String imageUrl);
    }
}

你可能感兴趣的:(通用工具类,工具,exception,string,interface,null,thread)