学习谷歌文档,总结如下:
1.图片加载框架的封装
1)利用HttpURLConnection来封装网络加载图片的方法
2)创建自定义的AsyncTask来封装1)中加载网络图片的方法,并显示到控件上。
3)暴露方法封装2)中自定义的加载并显示图片的AsyncTask
走完上面这几步,只需调用一个方法,就可以从网络上加载一张图片并且显示到控件上了。
解决List并发下载图片错位的问题
但是,谷歌文档中说上面代码会存在一个问题。就是如果在List里使用,利用的话,可能会发生图
图片错位的问题:就是某个item显示的图片,可能显示的图片是之前的item的图片。因为之前的这
张图片可能加载时间比较长,滑动后imageview是复用的,所以后面的item可能会显示之前的item的
图片。
这种就是由于并发产生的问题,谷歌工程师是这么解决问题的:
1》定义一个类 class DownloadedDrawable extends ColorDrawable,然后将下载的异步任务
DownloadAsyncTask与其绑定起来。
2》定义2个方法
BitmapDownloaderTask getBitmapDownloaderTask(ImageView imageView)
---得到与ImageView绑定的异步下载任务
boolean cancelPotentialDownload(String url, ImageView imageView)
--取消可能正在进行的下载
判断与ImageView绑定的异步下载任务的URL,如果为null或者是与当前方法传递进来
URL不一致,说明异步下载任务正在执行之前的下载,
本文出自 “行意天下” 博客,请务必保留此出处http://4259297.blog.51cto.com/4249297/1710561
原文:http://4259297.blog.51cto.com/4249297/1710561