软引用下载图片
2014-04-22 14:29
330 查看
public class AsyncImageLoader { private HashMap<String, SoftReference<Drawable>> imageCache; public AsyncImageLoader() { // 软引用 imageCache=new HashMap<String,SoftReference<Drawable>>(); } /*** * 下载图片 * @param imageUrl 图片地址 * @param imageCallback 回调接口 * @return */ public Drawable loadDrawable(final String imageUrl,final ImageCallback imageCallback){ if (imageCache.containsKey(imageUrl)){ SoftReference<Drawable> softReference = imageCache.get(imageUrl); //通过key获取软引用实例 Drawable drawable=softReference.get(); //获取软引用对象 if(drawable!=null){ return drawable; } } // final Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); imageCallback.imageLoaded((Drawable) msg.obj, imageUrl); } }; // 开启线程下载图片 new Thread(){ public void run() { Drawable drawable = loadImageFromUrl(imageUrl); // 将下载的图片保存至缓存中 imageCache.put(imageUrl, new SoftReference<Drawable>(drawable)); Message message = handler.obtainMessage(0, drawable); handler.sendMessage(message); }; }.start(); return null; } //根据URL下载图片(这里要进行判断,先去本地sd中查找,没有则根据URL下载,有则返回该drawable) protected Drawable loadImageFromUrl(String imageURL) { Bitmap bitmap = MyUtil.GetBitmap(imageURL, 100); Drawable drawable = new BitmapDrawable(bitmap); return drawable; } // 回调接口 public interface ImageCallback { public void imageLoaded(Drawable imageDrawable, String imageUrl); } }
相关文章推荐
- 多维数组
- JSON 数据转换
- 学习di'z地址
- 归并排序
- LR 连接数据库设置参数
- linux 下安装mysql
- hdu 4322 Candy 费用流
- win7中cookies的位置
- C/C++日常学习总结(第一篇)const用法及printf的执行顺序
- 求职回顾
- hdu 4322 Candy 费用流
- ajax
- 微信用手机号注册利与弊
- Hibernate – Dynamic-Update Attribute Example
- windows下图形界面转为控制台的main函数入口
- 2014-第九周项目一----<<,>>的运算符重载
- 2014微软编程之美初赛第一场第二题 树
- Android创建快捷方式,Phonegap创建快捷方式
- 转 FileStream Read File
- 计算彩色的BGR图像的直方图