Android中的图片加载三级缓存策略

一.面试提问:

1.说一下Android中的图片加载三级缓存策略:

        Android中的图片加载三级缓存策略分别为内存缓存、本地磁盘缓存、网络缓存,内存缓存使用LruCache算法,本地磁盘缓存使用DiskLruCache算法。

2.为什么要使用三级缓存策略:

        (1)提高图片加载的速度,提升用户的体验感。

        (2)节约用户流量。

        (3)bitmap的频繁重复创建,会带来内存和卡顿的问题。

3.介绍一下Android中的LruCache:

        Android中提供了一个缓存类叫LruCache,它是一个泛型类,它内部采用一个LinkedHashMap以强引用的方式存储外界的缓存对象,其提供了get和put的方法来完成缓存的获取和添加的操作,当缓存满了。LruCache会移除较早使用的缓存对象。

二.LruCache介绍

1.如何使用LruCache来实现内存缓存:

(1)初始化操作:(这里以图片缓存为例)

//除以1024是为了将单位统一为KB
int maxMemory =(int)(Runtime.getRuntime().maxMemory()/1024);
//总容量大小为当前进程的可用内存的八分之一
int cacheSize=maxMemory/8;
//完成bitmap对象大小的计算
mMemoryCache=new LruCache<String,Bitmap>(cacheSize){
    @override
    protected int sizeOf(String key,Bitmap bitmap){
        return bitmap.getRowBytes()*bitmap.getHeight()/1024;
    }
};

(2)缓存的获取和添加操作

//获取一个缓存对象
mMemoryCache.get(key);
//向LruCache中添加缓存
mMemory.put(key,bitmap);

三.DiskLruCache介绍

//todo

四.Glide中的三级缓存选项设置

1.Glide的内存缓存选项设置:

        默认是开启内存缓存的,可以通过下面的方法关闭内存缓存。

Glide.with(this)
     .load(url)
     .skipMemoryCache(true)//关闭内存缓存
     .into(imageView);

2.Glide的本地磁盘缓存选项设置:

        DiskCacheStrategy.NONE: 表示不缓存任何内容。
        DiskCacheStrategy.SOURCE: 表示只缓存原始图片。
        DiskCacheStrategy.RESULT: 表示只缓存转换过后的图片(默认选项)。
        DiskCacheStrategy.ALL : 表示既缓存原始图片,也缓存转换过后的图片。

Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.RESULT)
     .into(imageView);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值