`
djun100
  • 浏览: 181152 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Android图片缓存库使用经验总结

 
阅读更多



1、Android-Universal-Image-Loader

可以高度配置的网络图片缓存库,非常灵活,用户量最多

缓存过期实现:

File cacheDir = StorageUtils.getCacheDirectory(context); // or any other folder
MemoryCacheAware<String, Bitmap> memoryCacheCore 
          = new LruMemoryCache(4 * 1024 * 1024); // or any other implementation

MemoryCacheAware<String, Bitmap> memoryCache 
          = new LimitedAgeMemoryCache<String, Bitmap>(memoryCacheCore, 15 * 60);
DiscCacheAware discCache = new LimitedAgeDiscCache(cacheDir, 15 * 60);
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        .memoryCache(memoryCache)
        .discCache(discCache)
        ...
        .build();

If you use "limited age" memory cache or disc cache then bitmap or image file will be deleted from cache after timeout (actually they will be deleted during search in cache). Logic is following:

  1. Search bitmap in memory cache
    • needed bitmap is there
      • bitmap was added to cache more than specified time ago
        • delete it from memory cache, go to step 2
      • bitmap was added to cache recently
        • get the bitmap, display it. End.
    • no needed bitmap in cache, go to step 2
  2. Search image file in disc cache
    • needed image is there
      • image was added to cache more than specified time ago
        • delete it from disc cache, go to step 3
      • image was added to cache recently
        • decode image to bitmap, display it. End.
    • no needed image in cache, go to step 3
  3. Download image

Don't forget enable caching (in display options, DisplayImageOptions).

针对同一图片地址,图片会变的情况,平滑替换过期图片的实现:

方法1:重写LimitedAgeDiscCache、LimitedAgeMemoryCache的get方法

方法2:增加判断缓存是否过期的接口,如果过期则通过下载回调监听的方式更新UI。

2、androidQuery

链式调用,有自定义图片载入效果

3、Picasso

功能单一,没有缓存过期,同androidQuery一样链式调用,载入本地文件速度慢(没有生成thumbnails)。这有一篇老外的对比:http://stackoverflow.com/questions/19995007/local-image-caching-solution-for-android-square-picasso-vs-universal-image-load

4、android-smart-image-view

古董了,功能老掉牙了,不要用了





分享到:
评论

相关推荐

    android基础知识总结

    - 使用图片压缩技术减少图片大小,如使用PNG8代替PNG24。 - 减少主线程的阻塞操作,将耗时操作移至子线程执行。 - 适时释放不再使用的资源,避免内存泄漏。 - 使用ProGuard混淆代码,减小程序体积。 - 合理使用缓存...

    Android专业技能总结完整版

    4. **图片缓存**:使用 Glide 或 Picasso 图片加载库,它们支持内存和磁盘缓存策略,有效减少内存消耗,防止内存溢出,并提供图片压缩和占位符等功能。 5. **自定义View**:理解Android绘图机制,掌握Canvas、Paint...

    Android相册选择图片和拍照剪切上传图片头像

    1. **Intent的使用**:在Android中,Intent是用于启动其他组件(如Activity、Service等)的通信工具。在这个应用中,Intent被用来启动系统相册,让用户选择图片,或者启动相机进行拍照。例如,`Intent intent = new ...

    Android 性能调优和开源代码知识分享

    * 图片缓存:使用图片缓存机制,减少图片的加载次数,提高应用程序的响应速度。 2. Android 开源代码知识分享 Android 开源代码知识分享是指通过对 Android 开源项目的分享,来提高开发者的技术水平和经验。包括:...

    安卓图片轮播广告轮播自动滚屏相关-android之旋转罗盘风车开发Android随手指旋转图片.rar

    【标题】"安卓图片轮播广告轮播自动滚屏...总结,这个项目涵盖了Android开发中图片轮播、动画效果、用户交互等多个重要知识点,适合有一定基础的开发者进行学习和实践,以提升在Android UI设计和动画实现方面的技能。

    2022年android程序员简历.docx

    + 功能:图片缓存处理、SDcard 中的图片写入 + 使用到的开源库:Picasso * 项目名称:个人博客 + 项目简介:使用 BootStarp 响应式框架,后台服务端主要使用 Jsp+Servlet + 功能:发帖、阅读、评论、博主管理、...

    Android中Xutils框架的简单实用

    **Android中的Xutils框架详解与应用** Xutils是一款在Android开发中广泛使用的开源框架,它集成了网络请求、数据库操作、图片加载等多种功能,极大地提高了开发效率。本篇将深入探讨Xutils的基本概念、核心组件以及...

    Android-DownZ一个HTTP库可以增强Android应用中的网络连接使其更加简单快捷

    3. **图片下载**:使用DownZ进行图片资源的下载和缓存。 4. **文件上传**:上传用户产生的数据,如照片、文本文件等。 5. **API调用**:对接RESTful API,获取JSON或其他格式的响应数据。 ### 总结 DownZ库通过其...

    android ImageView 的几点经验总结

    这篇文章主要总结了关于Android ImageView使用的一些经验和技巧。 1. **ImageView与ImageSwitcher的结合使用**: ImageSwitcher是一个视图切换器,通常用于在多个ImageView之间进行平滑过渡。它可以配合Adapter来...

    Android OOM错误的原因

    本文将深入探讨Android中OOM错误的原因及相关的内存管理机制。 #### 一、Android内存管理机制概述 在Android中,每个应用都有自己的独立进程,并且每个进程的内存都是相互隔离的。Android操作系统为每个进程分配了...

    android studio 升级3.1版本导包爆红问题1

    在Android Studio升级到3.1版本后,开发者可能会遇到一个常见的问题,即“导包爆红”,这通常意味着代码中的导入语句无法找到相应的库。本文将深入探讨这个问题及其解决方案。 首先,当遇到这种问题时,开发者的...

    android 可放大缩小取消的图片查看器

    首先,我们需要理解Android中的ImageView组件。ImageView是Android系统提供的用于显示图像的视图控件,它能够加载和显示本地或网络资源的图片。在默认情况下,ImageView并不支持缩放功能。为了实现图片的放大和缩小...

    android年终总结范文.doc

    在Android开发领域,年终总结是一个重要的环节,它可以帮助开发者回顾过去一年的工作,提炼经验,为未来的技术提升和项目管理提供参考。本文将以一位Android开发者的工作经历为例,探讨他在2022年遇到的主要技术挑战...

    Android开发_2年工作经验Android软件工程师求职简历个人简历.pdf

    这份简历是一位拥有两年工作经验的...总结起来,这位工程师具有全面的Android开发技能,不仅精通基础技术,还熟悉各种高级特性和开源库的使用。他的专业能力和积极态度使他成为寻找Android开发岗位的有力竞争者。

    android官方的demo

    在ApiDemos中,你可以看到HttpURLConnection、Volley、OkHttp等网络库的使用示例,了解如何进行HTTP请求、处理响应数据,以及如何实现异步加载和缓存机制。 五、多媒体处理 Android支持音频、视频和图像的处理。...

    Android经典项目案例开发

    在Android开发领域,实践是掌握技术的关键。"Android经典项目案例开发"是一个旨在帮助开发者提升技能的实践宝典,...记得在学习过程中不断反思和总结,将理论知识转化为实践经验,这样才能真正成为Android开发的高手。

    Android Image_Loader_Demo图片加载工具.rar

    Android Image_Loader_Demo,即Universal Image Loader(UIL)是一个强大的开源库,专为解决Android平台上的图片异步加载、缓存和显示问题而设计。它提供了高度自定义和灵活性,使得开发者能够有效地管理和优化应用...

    android超炫的图片浏览器(实用1).zip

    1. **图片加载库**:源码可能采用了如Glide或Picasso这样的流行图片加载库,它们能够高效地处理网络和本地资源的图片,进行缓存管理,减少内存消耗,同时支持图片的缩放和裁剪。 2. **手势操作**:用户可以通过简单...

    Android应用源码超炫的图片浏览器-IT计算机-毕业设计.zip

    在这个项目中,开发者可能采用了如Glide或Picasso这样的库来高效地加载和缓存网络图片。这些库能够自动处理图片的缩放、裁剪和内存管理,避免内存泄漏和ANR问题。 数据管理方面,如果图片数据存储在本地,可能使用...

Global site tag (gtag.js) - Google Analytics