开启AsyncTask从网络加载图片
2016-06-23 19:19
459 查看
/*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获取 }
相关文章推荐
- Android 网络延时加载框
- Linux下nginx配置https协议访问
- Linux下nginx配置https协议访问
- Android之判断当前网络状态
- 多网卡时如何使用源地址ping目的地址,检测网络连通性
- 通过Http接口及SolrNet 两种方法基于Solr5.5.1 实现CURD
- httplib、urllib、urllib2的区别
- tomcat 解析(四)-处理http请求过程
- BP神经网络梯度下降算法
- 详解android高仿微信后台接受消息,发送通知,监测网络连接
- Tomcat、http、get/post
- camel 配置 https访问配置
- c版http服务器 shttpd-1.38 vs2013
- iOS - HTTPS接口加密和身份认证
- 不用网线搭建IPv6网络测试环境
- springmvc restful 出现HTTP Status 406 -
- java 通过Httpclient模拟https Post 请求,实现双向认证
- Android工具类系列-HttpUtil
- 网络原理,以及对VMware Workstation虚拟网络VMnet0、VMnet1、VMnet8的图解
- HTTP协议