`

三步搞定android应用图片缓存

阅读更多

目前很多商业应用都会涉及到从网络上读取图片数据的问题,为了节约用户流量,应用一般会将图片缓存起来。图片缓存一般分为内存缓存和外存缓存。内存缓存运用java的 缓存机制,在程序完全退出后,缓存所在的内存空间可能被其它应用程序占用从而丢失。外存缓存一般放在程序特有的访问空间或者sd卡中,在sd卡中存放的资 源为公有资源,其它程序也可以访问,且对用户来讲没有一个强制清除缓存的规范机制。综合以上,本文采用将缓存图片放置在程序的特有空间中, 其它应用程序无法访问,且用户可以在应用程序管理中的"清除数据"选项中清除缓存。 

      本文提供三种缓存策略:(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;

}  

demo(内有jar包)

分享到:
评论

相关推荐

    五步搞定Android开发环境部

    - AVD(Android Virtual Device):Android模拟器,用于在电脑上模拟Android设备进行应用测试。 - Gradle:自动化构建工具,用于管理项目依赖、构建过程等,是Android Studio默认的构建系统。 - ADB(Android Debug ...

    Android 单图片选择,一个dialog全搞定

    在Android应用开发中,用户界面经常需要涉及到图片的选取功能,比如上传头像、选择背景等。本教程将深入探讨如何在Android 7.0系统上实现一个简单的单图片选择功能,通过一个对话框(Dialog)轻松完成。我们将讨论...

    五步搞定Android开发环境部署

    Android应用开发环境的搭建是初学者必须经历的第一步,下面将详细解析这五步过程。 第一步:安装JDK JDK(Java Development Kit)是Java编程语言的软件开发工具包,它包含Java运行环境、开发工具和Java基础类库。在...

    三步搞定:Vue.js调⽤Android原⽣操作

    ### 三步搞定:Vue.js调用Android原生操作 #### 概述 在混合开发模式下,将Vue.js与Android结合使用时,有时需要在前端应用中直接调用Android平台提供的原生功能,比如访问设备硬件、系统服务等。本文档详细介绍了...

    3分钟搞定AndroidPush

    在Android平台上实现Push推送功能,通常并非易事,尤其是由于GCM(Google Cloud Messaging)在国内的不可用性,开发者们需要寻找其他解决方案。...不过,有了这个快速入门,你已经迈出了Android Push推送的第一步。

    仅5步搞定Android开发环境部署 Android开发环境搭建教程

    第三步,下载并安装Eclipse。Eclipse是一款流行的集成开发环境(IDE),支持多种语言的开发,包括Java和Android。下载最新版本的Eclipse IDE for Java Developers,并按照向导完成安装。 第四步,安装Android SDK。...

    Android应用源码之一个Demo搞定30个控件.zip

    "Android应用源码之一个Demo搞定30个控件.zip"这个资源提供了一个实用的示例,通过一个单一的Demo来展示如何有效地使用Android平台中的30种不同控件。下面我们将深入探讨这些知识点。 首先,`JavaApk源码说明.txt`...

    NET Framework 3.5简单1步搞定

    简单1步搞定 NET Framework 3.5 ,离线下载简单1步搞定 NET Framework 3.5 ,离线下载简单1步搞定 NET Framework 3.5 ,离线下载简单1步搞定 NET Framework 3.5 ,离线下载简单1步搞定 NET Framework 3.5 ,离线下载...

    Android应用源码之一个Demo搞定30个控件.zip项目安卓应用源码下载

    Android应用源码之一个Demo搞定30个控件.zip项目安卓应用源码下载Android应用源码之一个Demo搞定30个控件.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    Android应用源码之原来PATH的菜单效果如此简单。布局+TranslateAnimation搞定.zip项目安卓应用源码下

    布局+TranslateAnimation搞定.zip项目安卓应用源码下Android应用源码之原来PATH的菜单效果如此简单。布局+TranslateAnimation搞定.zip项目安卓应用源码下 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合...

    搞定Android开发圆形头像

    在Android应用开发中,为用户提供美观的界面是至关重要的,其中用户头像的展示方式就是一个不容忽视的细节。"圆形头像"是一个常见的设计选择,它不仅简洁大方,还能增加应用的视觉吸引力。本篇文章将深入讲解如何在...

    搞定Android适配问题

    3. **使用百分比布局(PercentRelativeLayout/PercentFrameLayout)**:这种布局允许子视图的大小和位置以父视图的百分比来定义,非常适合处理横跨多种屏幕尺寸的应用。 4. **响应式设计(Responsive Design)**:...

    5分钟搞定android环境搭建-最新版本

    5分钟搞定android环境搭建-最新版本 快速搭建 入门迅速

    一个控件搞定Android item侧滑删除菜单

    标题"一个控件搞定Android item侧滑删除菜单"和描述中提到的是一种巧妙的方法,通过自定义一个ViewGroup来实现这种效果,而且避免了复杂的冲突处理。 首先,我们来看一下如何创建自定义的ViewGroup。在Android中,...

    Android应用源码原来PATH的菜单效果如此简单。布局+TranslateAnimation搞定.zip

    在Android应用开发中,创建吸引用户的交互界面是至关重要的,其中菜单效果的实现往往能提升应用的用户体验。标题“Android应用源码原来PATH的菜单效果如此简单。布局+TranslateAnimation搞定.zip”揭示了一个使用...

Global site tag (gtag.js) - Google Analytics