文档章节

android实现图片缓存的代码

墙头草
 墙头草
发布于 2012/01/04 16:28
字数 290
阅读 744
收藏 6

本文提供三种缓存策略:

(1)LRU算法,固定缓存图片数量(max_num),当图片数量超出max_num时,将缓存中最近用的最少的图片删除。

(2)FTU算法,固定每张图片的缓存时限,以最后一次使用算起,超过时限后删除。

(3)FMU算法,在存储器中固定一定大小的存储空间,超过固定空间后 将缓存中占用最大尺寸的图片删除。使用时只需要向方法体中传递图片的URL即可。

 

使用方法:

    1.导入jar;

    2. 获取服务;

    3.提交url,交给程序去判断是否下载。 

 

public  class ImagecachetacticsdemoActivity  extends Activity {
     public  void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        setContentView(R.layout.item);

         /* FMU */
        imageCacheManager = ImageCacheManager.getImageCacheService( this,
                ImageCacheManager.MODE_FIXED_MEMORY_USED, "memory");
        imageCacheManager.setMax_Memory(1024 * 1024);

         /* FTU */
         //  imageCacheManager = ImageCacheManager.getImageCacheService(this,
        
//  ImageCacheManager.MODE_FIXED_TIMED_USED, "time");
        
//  imageCacheManager.setDelay_millisecond(3 * 60 * 1000);

                    /* LRU */
         //  imageCacheManager = ImageCacheManager.getImageCacheService(this,
        
//  ImageCacheManager.MODE_LEAST_RECENTLY_USED, "num");
        
//  imageCacheManager.setMax_num(5);

        
//  imageCacheManager = ImageCacheManager.getImageCacheService(this,
        
//  ImageCacheManager.MODE_NO_CACHE_USED, "nocache");

        mImageView = (ImageView) findViewById(R.id.imageView);
         new DownloadTask()
                .execute("http://www.touxiang99.com/uploads/allimg/110417/1_110417112640_2.jpg");
    }

     private  class DownloadTask  extends AsyncTask<String, Void, Bitmap> {

        @Override
         protected Bitmap doInBackground(String... params) {
             try {
                 return imageCacheManager.downlaodImage( new URL(params[0]));
            }  catch (IOException e) {
                e.printStackTrace();
            }
             return  null;
        }

        @Override
         protected  void onPostExecute(Bitmap result) {

            mImageView.setImageBitmap(result);
             super.onPostExecute(result);
        }

        @Override
         protected  void onPreExecute() {
            mImageView.setImageResource(R.drawable.ic_launcher);
             super.onPreExecute();
        }

    }

     private ImageView mImageView;
     private ImageCacheManager imageCacheManager;

} 

© 著作权归作者所有

墙头草
粉丝 16
博文 145
码字总数 117172
作品 0
卢湾
私信 提问
【转】值得推荐的android开发框架简介

第一个:Afinal 项目地址:https://github.com/yangfuhai/afinal 功能:一个android的ioc,orm框架,内置了四大模块功 能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过finalActivi...

kymjs张涛
2014/08/05
2.8K
0
Android性能优化——图片优化(二)

图片的加载和显示是每个商业APP都避免不了的问题,对于图片重度依赖类APP,例如壁纸类应用,图片社交类应用,对于图片的处理将会影响到整个APP的用户体验。 在正式了解Android中如何优化图片...

落地吃鸡
2017/04/21
361
0
移动开发者必须知道的Android框架推荐

一些总结出来的Android快速开发框架,全部都是开源框架,附带项目地址,是开发学习的绝佳资料。 thinkAndroid项目 github地址:https://github.com/white-cat/ThinkAndroid 功 能:ThinkAndr...

程序袁_绪龙
2014/09/02
152
0
Android开发优化之——对Bitmap的内存优化

在Android应用里,最耗费内存的就是图片资源。而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。所以,对于图片的内存优...

KingMing
2015/04/03
97
0
GridView加载大量图片卡顿问题

1 在异步加载之前的代码的和普通加载代码一样,只需要在GirdView的Adapter的public View getView(int position, View convertView, ViewGroupparent)方法使用异步加载的方式返回ImageView。 ...

ljrapple
2014/08/12
2.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

无回路有向图的拓扑排序

因公司业务需要,在表单中每个字段都会配置自动计算,但自动计算公式中会引用到其他字段中的值。所以希望可以根据计算公式,优先计算引用的公式。所以最终使用了无回路有向图的扩扑排序来实现...

兜兜毛毛
57分钟前
5
0
如何抢占云栖大会C位?史上最强强强攻略来了

点击观看视频: APSARA云栖大会开发者情怀 原文链接 本文为云栖社区原创内容,未经允许不得转载。

阿里云官方博客
今天
6
0
Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

作者 | 声东 阿里云售后技术专家<br /> 文章来源:Docker,点击查看原文。 <br />以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解...

阿里巴巴云原生
今天
9
0
PHP7.3的新特性

2018年12月6日,PHP7.3正式版发布,在PHP7.2基础上进行了大量错误修复和安全优化,性能提升10%! 从目前的更新说明来看,PHP 7.3 并不是一个主打新特性的版本,包含更多的是 bug 修复。PHP 7...

迅睿CMS-PHP开源CMS程序
今天
8
0
Tomcat 应用中并行流带来的类加载问题

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ 作者:肖铭轩、王道环 随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)...

vivo互联网技术
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部