import
java.io.InputStream;
import
java.lang.ref.WeakReference;
import
java.net.HttpURLConnection;
import
java.net.URL;
import
android.graphics.Bitmap;
import
android.graphics.BitmapFactory;
import
android.os.AsyncTask;
import
android.util.Log;
import
android.widget.ImageView;
/**
* @类名:ImageDownloader
* @功能描述:优化的ImageDownloader, 不带缓存,在线下载,用户头像请使用。
* @作者: William Xu
* @创建日期:2013-6-7
* @修改人:
* @修改日期:
* @修改备注:
* @版本号:1.0
*/
public
class
ImageDownloader {
public
void
download(String url, ImageView imageView) {
BitmapDownloaderTask task =
new
BitmapDownloaderTask(imageView);
task.execute(url);
}
class
BitmapDownloaderTask
extends
AsyncTask<String, Void, Bitmap> {
private
final
WeakReference<ImageView> imageViewReference;
public
BitmapDownloaderTask(ImageView imageView) {
imageViewReference =
new
WeakReference<ImageView>(imageView);
}
@Override
protected
Bitmap doInString... params) {
Bitmap bitmap =
null
;
try
{
URL imageUrl =
new
URL(params[
0
]);
HttpURLConnection conn = (HttpURLConnection) imageUrl
.openConnection();
conn.setConnectTimeout(
30000
);
conn.setReadTimeout(
30000
);
conn.setInstanceFollowRedirects(
true
);
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
}
catch
(Exception ex) {
Log.e(
""
,
"getBitmap catch Exception...\nmessage = "
+ ex.getMessage());
}
return
bitmap;
}
@Override
protected
void
onPostExecute(Bitmap bitmap) {
if
(isCancelled()) {
bitmap =
null
;
}
if
(imageViewReference !=
null
) {
ImageView imageView = imageViewReference.get();
if
(imageView !=
null
&& bitmap !=
null
) {
imageView.setImageBitmap(bitmap);
}
}
}
}
}