开启AsyncTask从网络加载图片
2024-09-28 05:41:53
/*AsyncTask 异步任务即做一些简单的异步处理 ;是handle与线程池的封装
* 第一个泛型:参数类型泛型
* 第二个泛型:更新进度泛型
* 第三个泛型:onProgressUpdate的返回结果的泛型
*
*/ class BitmapTask extends AsyncTask<Object, Void, Bitmap>{ private ImageView pic;
private String murl;
/**
* 后台耗时方法在此执行,子线程
*/
@Override
protected Bitmap doInBackground(Object... params) {
pic = (ImageView) params[0];
murl = (String) params[1]; pic.setTag(murl);//将图片与url绑定
return downloadBitmap(murl);
}
/**
* 更新进度,主线程
*/
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
}
/**
* 后台耗时方法结束之后,在此执行,主线程
*/
@Override
protected void onPostExecute(Bitmap result) {
if(result!=null){ String tag = (String) pic.getTag();
if(tag.equals(murl)){
pic.setImageBitmap(result);
} }
mlocalcacheutils.setBitmapTolocal(murl, result);
mmemorycacheutils.setBitmapTomemory(murl, result);
}
}
/**
*
* 下载图片
* @return
*/
private Bitmap downloadBitmap(String url){
HttpURLConnection conn=null;
try {
conn=(HttpURLConnection) new URL(url)
.openConnection(); conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.setRequestMethod("GET");
conn.connect(); int responseCode = conn.getResponseCode();//响应码 if(responseCode==200){//表示成功连接
InputStream inputStream = conn.getInputStream(); //图片的压缩设置
BitmapFactory.Options option=new Options();
option.inSampleSize=2;//表示将图片压缩原来的二分之一,需要根据图片的大小来计算出压缩值的大小
option.inPreferredConfig=Bitmap.Config.RGB_565;//通过设置图片的格式即像素大小来进行图片的压缩 Bitmap bitmap = BitmapFactory.decodeStream(inputStream,null,option);
return bitmap;
} } catch (IOException e) { e.printStackTrace();
}
finally{
conn.disconnect();
}
return null; }
最后使用
public void getBitmapFromNet(ImageView iv_photo, String url) {
// TODO Auto-generated method stub
BitmapTask bitmaptask=new BitmapTask();
bitmaptask.execute(iv_photo,url);//开启AsyncTask,参数在doInBackground获取
}
最新文章
- Lodash.js的库
- 【My Life】写在年末, 我的2013
- Android开发——搭建最新版本的Android开发环境
- ion-refresher 下拉更新数据
- JBoss7.1配置外网访问
- C bit 操作
- ActionFilterAttribute OnActionExecuting 获取参数
- 搭建自己的BT下载平台服务器
- ASP.NET Core MVC Tag Helpers 介绍
- JVM学习(一)
- Linux-CentOS7下安装mysql5.6常见问题解决!
- MySQL中遇到的几种报错及其解决方法
- Sass和less的区别是什么?用哪个好
- Kafka运行一段时间报错Too many open files
- JS导出gridview到excel
- iOS - UITableView加载网络图片 cell适应图片高度
- Docker基本命令与使用 —— Docker镜像与仓库(二)
- 51nod 1137 矩阵乘法
- Oracle 多行合并一行 方法
- ssh 远程执行命令 -t