• Android开源框架Universal-Image-Loader完全解析(二)


    继续上篇Android开源框架Universal-Image-Loader解析(一),本篇文章给大家分享的是Android开源框架Universal-Image-Loader解析之图片缓存策略。

    我们一般去加载大量的图片的时候,都会做缓存策略,缓存又分为内存缓存硬盘缓存,我之前也写了几篇异步加载大量图片的文章,使用的内存缓存是LruCache这个类,LRU是Least Recently Used 近期最少使用算法,我们可以给LruCache设定一个缓存图片的最大值,它会自动帮我们管理好缓存的图片总大小是否超过我们设定的值, 超过就删除近期最少使用的图片,而作为一个强大的图片加载框架,Universal-Image-Loader自然也提供了多种图片的缓存策略,下面就来详细的介绍下。

    内存缓存

    首先我们来了解下什么是强引用和什么是弱引用?

    强引用是指创建一个对象并把这个对象赋给一个引用变量,强引用有引用变量指向时永远不会被垃圾回收。即使内存不足的时候宁愿报OOM也不被垃圾回收器回收,我们new的对象都是强引用。

    弱引用通过weakReference类来实现,它具有很强的不确定性,如果垃圾回收器扫描到有着WeakReference的对象,就会将其回收释放内存。

    现在我们来看Universal-Image-Loader有哪些内存缓存策略

    1. 只使用的是强引用缓存 

    ·LruMemoryCache(这个类就是这个开源框架默认的内存缓存类,缓存的是bitmap的强引用,下面我会从源码上面分析这个类)

    2.使用强引用和弱引用相结合的缓存

    ·UsingFreqLimitedMemoryCache(如果缓存的图片总量超过限定值,先删除使用频率最小的bitmap)

    ·LRULimitedMemoryCache(这个也是使用的lru算法,和LruMemoryCache不同的是,他缓存的是bitmap的弱引用)

    ·FIFOLimitedMemoryCache(先进先出的缓存策略,当超过设定值,先删除最先加入缓存的bitmap)

    ·LargestLimitedMemoryCache(当超过缓存限定值,先删除最大的bitmap对象)

    ·LimitedAgeMemoryCache(当 bitmap加入缓存中的时间超过我们设定的值,将其删除)

    3.只使用弱引用缓存

    ·WeakMemoryCache(这个类缓存bitmap的总大小没有限制,唯一不足的地方就是不稳定,缓存的图片容易被回收掉)

    上面介绍了Universal-Image-Loader所提供的所有的内存缓存的类,当然我们也可以使用我们自己写的内存缓存类,我们还要看看要怎么将这些内存缓存加入到我们的项目中,我们只需要配置ImageLoaderConfiguration.memoryCache(...),如下:

    ?

    1

    2

    3

    de >ImageLoaderConfiguration configuration = de>de >newde> de >ImageLoaderConfiguration.Builder(de>de >thisde>de >)  de>

    de >        de>de >.memoryCache(de>de >newde> de >WeakMemoryCache())  de>

    de >        de>de >.build();de>

    下面我们来分析LruMemoryCache这个类的源代码

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    Tag:

    Freenovo 发表于2013-12-09 21:38:00 | 编辑 | 分享 0

    引用地址:

  • 相关阅读:
    短信
    solr测试用的配置
    中文词启动
    配置域
    applicationContext-redis.xml
    Redis端口配置
    springDataRedis 依赖
    FastDFSClient上传图片工具类
    security 页面测试
    PHP图片压缩功能(按比例图片缩放)(转载)
  • 原文地址:https://www.cnblogs.com/freenovo/p/4469792.html
Copyright © 2020-2023  润新知