/*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获取
}

开启AsyncTask从网络加载图片的更多相关文章

  1. iOS网络加载图片缓存策略之ASIDownloadCache缓存优化

    iOS网络加载图片缓存策略之ASIDownloadCache缓存优化   在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用 ...

  2. swift 基础小结01 --delegate、Optional、GCD的使用、request请求、网络加载图片并保存到沙箱、闭包以及桥接

    本文主要记录swift中delegate的使用.“?!”Optional的概念.GCD的使用.request请求.网络加载图片并保存到沙箱.闭包以及桥接. 一.delegate的使用 swift中de ...

  3. 【转】Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址

    Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址 关注finddreams,一起分享,一起进步: http://blog.csdn.net/finddr ...

  4. android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存

    经常会用到 网络文件 比如查看大图片数据 资源优化的问题,当然用开源的项目  Android-Universal-Image-Loader  或者 ignition 都是个很好的选择. 在这里把原来 ...

  5. iOS网络加载图片缓存与SDWebImage

    加载网络图片可以说是网络应用中必备的.如果单纯的去下载图片,而不去做多线程.缓存等技术去优化,加载图片时的效果与用户体验就会很差. 一.自己实现加载图片的方法 tips: *iOS中所有网络访问都是异 ...

  6. 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)

    AsyncTask使用方法详情:http://www.cnblogs.com/zzw1994/p/4959949.html 下拉开源框架PullToRefresh使用方法和下载详情:http://ww ...

  7. LruCache:从网络加载图片缓存实例

    OOM异常 堆内存用于存储实例对象,当程序不断创建对象,并且对象都有引用指向,那么垃圾回收机制就不会清理这些对象,当对象多到挤满堆内存的上限后,就产生OOM异常.Android系统为每个应用程序使用的 ...

  8. C# WPF 从网络加载图片到byte[]数组中 Stream转byte[]代码

    折腾一中午 因为NetworkStream不支持Length属性 private byte[] GetImageFromResponse(WebResponse response) { using ( ...

  9. 解决ListView异步加载图片错乱问题 .

    发一个异步图片加载控件.网上也有大把的异步网络加载图片的控件,但是有一个问题,异步加载会造成列表中的图片混乱,因为列表的每一项的View都可能被重用,异步加载的时候多个异步线程引用到了同一个View将 ...

随机推荐

  1. Ubuntu14.04上安装pip的方法

    在Ubuntu14.04上,建议通过下面的方法安装,这是一种通用的方法,也适用于Windows,当然在Windows下 手动下载下来就行了 wget https://bootstrap.pypa.io ...

  2. UVALive 5880 Vigenère Cipher Encryption (模拟)

    Stack Machine Executor 题目链接: http://acm.hust.edu.cn/vjudge/problem/26628 Description http://7xjob4.c ...

  3. CSS元素水平居中和垂直居中的方法大全

    水平居方法: 1.最熟悉的是给元素定义一个宽度,然后使用margin: body{ width:960px; margin:0 auto;}这个是当我们的定义元素的宽度时显现的,如果我们不能定义宽度时 ...

  4. gb2312和UTF-8的区别

    GB2312编码大约包含6000多汉字(不包括特殊字符),编码范围为第一位b0-f7,第二位编码范围为a1-fe(第一位为cf时,第二位为a1-d3),计算一下汉字个数为6762个汉字.当然还有其他的 ...

  5. How Tomcat Works(十五)

    本文接下来分析Context容器,Context容器实例表示一个具体的Web应用程序,其中包括一个或多个Wrapper实例:不过Context容器还需要其他的组件支持,典型的如载入器和Session管 ...

  6. CentOS 安装 gcc

    centos linux默认可以采用yum方式安装,则采用如下命令安装gcc编译器即可:#yum -y install gcc 系统会自动安装gcc及依赖组件 gcc                 ...

  7. C#以及Oracle中的上取整、下取整方法

    1.C#中: 上取整——Math.Ceiling(Double),即返回大于或等于指定双精度浮点数的最大整数(也可称为取天板值): eg:  Math.Ceiling(1.01)=2;      Ma ...

  8. 如何选择PDA的操作系统? Android OR WINCE?

     PDA(Personal Digital Assistant),又称为掌上电脑,可以帮助我们完成在移动中工作,学习,娱乐等.按使用来分类,分为工业级PDA和消费品PDA.当我们需要购买PDA的时候, ...

  9. (2)html文本格式化 解说

  10. Setting up Nutch 2.1 with MySQL to handle UTF-8

    原文地址: http://nlp.solutions.asia/?p=180 These instructions assume Ubuntu 12.04 and Java 6 or 7 instal ...