1.创建NetCacheUtils中创建downloadBitmap(String url)方法

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();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
} } catch (IOException e) { e.printStackTrace();
}
finally{
conn.disconnect();
}
return null; }

2.在NetCacheUtils中调用这个方法

public class NetCacheUtils {

    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 异步任务即做一些简单的异步处理 ;是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);
} }
System.out.println("从网络上加载图片啦"); }
}

3.在MyBitMaputils类中调用NetCacheUtils类

public class MyBitMaputils {
NetCacheUtils netcache;
public MyBitMaputils(){
netcache=new NetCacheUtils();
} public void display(ImageView iv_photo, String url) {
iv_photo.setImageResource(R.drawable.news_pic_default);//默认图片,防止图片的复用
//内存缓存 //本地缓存 //网络缓存(第一次)
netcache.getBitmapFromNet(iv_photo,url);
} }

4.就可以直接使用MyBitMaputils这个工具类了

使用HttpURLConnection和AsyncTask从网络缓存图片的更多相关文章

  1. iOS网络编程(三) 异步加载及缓存图片---->SDWebImage

    @SDWebImage提供一个UIImageView的类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. @SDWebImage的导入1.https:// ...

  2. Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

    Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类 转载自http://www.trinea.cn/android/android-common-lib/ 介绍总结的一 ...

  3. Android LazyList 从网络获取图片并缓存

    原演示地址 本文内容 环境 演示 LazyList 从网络获取图片并缓存 参考资料 本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中.该演示具备将缩 ...

  4. 【Java/Android性能优 7】Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

    本文转自:http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View( ...

  5. Android异步下载图片并且缓存图片到本地

    Android异步下载图片并且缓存图片到本地 在Android开发中我们经常有这样的需求,从服务器上下载xml或者JSON类型的数据,其中包括一些图片资源,本demo模拟了这个需求,从网络上加载XML ...

  6. 综合使用LruCache和DiskLruCache 缓存图片

    Activity public class MainActivity extends Activity {     private GridView mPhotoWall;     private P ...

  7. Android之简单了解Bitmap显示图片及缓存图片

    昨天我们学了如何连接网络,今天我们就学习一下如何从把网上图片显示到项目中 今天主要用到的是Bitmap 类 Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图 ...

  8. Android ListView从网络获取图片及文字显示

    上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...

  9. Android 网络下载图片

    2中方法: 1. public byte[] downloadResource(Context context, String url) throws ClientProtocolException, ...

随机推荐

  1. 【MySql】在Linux下安装MySql数据库

    [参数环境] 1.Host OS:Win7 64bit 2.VM: VMware 11.1.0 3.Client OS:CentOS 6 4.系统中已安装的openssl版本: openssl-1.0 ...

  2. TransactionScope事务对多个数据库的操作

    .Net 2.0引入了轻量级事务管理器(Lighweight Transaction Manager),即System.Transactions.TransactionManager. 轻量级事务管理 ...

  3. HDU 5702 Solving Order (水题,排序)

    题意:给定几种不同的颜色和它的权值,按它的权值排序. 析:排序. 代码如下: #include <cstdio> #include <string> #include < ...

  4. MAT(1) 小样

    一.内存溢出时生成hprof文件 运行参数: -Xms40m -Xmx40m -Xmn20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=E:\J ...

  5. springMVC使用注解方式进行页面跳转

    <!--控制层-->package cn.org.spartacus.spring; import org.springframework.beans.factory.annotation ...

  6. 用html5的canvas生成图片并保存到本地

    原文:http://www.2cto.com/kf/201209/156169.html 前端的代码: [javascript]  function drawArrow(angle)  {      ...

  7. Release 版本和 Debug 版本

    什么是 Release 版本.Debug 版本? bug-缺陷,程序故障.而debug指的是排除缺陷,显然这个模式是面向开发者的. 而release是满足发布所用. Debug 和 Release,在 ...

  8. linux tail命令的使用方法详解 (转载)

    本文介绍Linux下tail命令的使用方法.linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新 ...

  9. javaScript hook

    今天在网上搜索了不少资料,基本概念如下: 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的.当消息到 ...

  10. PHP函数前面的@。

    @是可以屏蔽函数执行过程中遇到问题而产生的一些错误.警告信息,这样用户就看不到程序的出错信息.这样除了用户界面会友好一些外,更重要的是安全性,因为屏蔽了出错文件的路径等信息. 比如说这个: for($ ...