使用HttpURLConnection和AsyncTask从网络缓存图片
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从网络缓存图片的更多相关文章
- iOS网络编程(三) 异步加载及缓存图片---->SDWebImage
		
@SDWebImage提供一个UIImageView的类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. @SDWebImage的导入1.https:// ...
 - Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类
		
Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类 转载自http://www.trinea.cn/android/android-common-lib/ 介绍总结的一 ...
 - Android LazyList 从网络获取图片并缓存
		
原演示地址 本文内容 环境 演示 LazyList 从网络获取图片并缓存 参考资料 本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中.该演示具备将缩 ...
 - 【Java/Android性能优 7】Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类
		
本文转自:http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View( ...
 - Android异步下载图片并且缓存图片到本地
		
Android异步下载图片并且缓存图片到本地 在Android开发中我们经常有这样的需求,从服务器上下载xml或者JSON类型的数据,其中包括一些图片资源,本demo模拟了这个需求,从网络上加载XML ...
 - 综合使用LruCache和DiskLruCache 缓存图片
		
Activity public class MainActivity extends Activity { private GridView mPhotoWall; private P ...
 - Android之简单了解Bitmap显示图片及缓存图片
		
昨天我们学了如何连接网络,今天我们就学习一下如何从把网上图片显示到项目中 今天主要用到的是Bitmap 类 Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图 ...
 - Android ListView从网络获取图片及文字显示
		
上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...
 - Android 网络下载图片
		
2中方法: 1. public byte[] downloadResource(Context context, String url) throws ClientProtocolException, ...
 
随机推荐
- 【转】eclipse.ini内存设置
			
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 这里有几个问题:1. 各个参数的含义什么?2. 为什么有的机器我将-Xm ...
 - [iOS微博项目 - 2.4] - 重新安排app启动步骤
			
github: https://github.com/hellovoidworld/HVWWeibo A.app启动步骤 1.加入了授权步骤之后,最先要判断app内是否已经登陆了账号 2.在程序启 ...
 - Oracle用户的单张表的读写权限控制
			
在oracle数据库的用户下,一张表需要做读写控制,只能读和写,不能删除和修改.开发人员开始想从用户权限上去实现. 经过一番讨论,判读从权限上去实现该需求是不合适的. 这个用户下很多表,根本不会被一个 ...
 - HDU3535AreYouBusy(分组背包)
			
http://acm.hdu.edu.cn/showproblem.php?pid=3535 分组背包,每一组加了以下三个限制 0 stands for the sets that should ch ...
 - 我的Memcache学习笔记
			
一.编绎安装Memcached 二.Memcached基本命令 四.PHP扩展模块安装 五.设置session用memcache来存储 六.PHP使用Memcache的一致性哈希连接方式 七.Memc ...
 - jqeuery $.ajax 与后台jsone交互
			
============================action后台,我这里是SpringMVC================================================@C ...
 - inpuy type=date
			
http://www.w3schools.com/html/html_form_input_types.asp http://caniuse.com/#feat=input-datetime 浏览器兼 ...
 - Flex SuperTabNavigator Tab标签图片不显示或图片显示不完全
			
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
 - Oracle闪回
			
在PLSQL开发时,有时候会遇到对表的误删除,其实遇到这种情况不需要紧张,如果问题较大,请DBA帮忙,如果只是小问题,只需自己处理,利用flashback闪回操作即可,可将表进行恢复 在删除表时,系统 ...
 - WaitForMultipleObject与MsgWaitForMultipleObjects用法
			
http://blog.csdn.net/byxdaz/article/details/5638680 用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法. 但 ...