【android】实现图片的三级缓存。工具类

本文详细介绍了Android应用中为什么要使用三级缓存,包括网络缓存、本地缓存和内存缓存的原理,并提供了代码实现和使用方法,旨在优化图片加载,减少网络交互,节省流量。
摘要由CSDN通过智能技术生成

本文主要分析以下几点

  • 为什么使用三级缓存
  • 什么是三级缓存
  • 三级缓存原理
  • 代码的具体实现:有注释
  • 工具类使用方法
  • github分享地址

1、为什么使用三级缓存

  • 如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了
  • 假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响
  • 特别是,当我们想要重复浏览一些图片时,如果每一次浏览都需要通过网络获取,流量的浪费可想而知
  • 因此提出三级缓存策略,通过网络、本地、内存三级缓存图片,来减少不必要的网络交互,避免浪费流量

2、什么是三级缓存

  • 网络缓存, 不优先加载, 速度慢,浪费流量
  • 本地缓存, 次优先加载, 速度快
  • 内存缓存, 优先加载, 速度最快

3、三级缓存原理

  • 首次加载 Android App 时,肯定要通过网络交互来获取图片,之后我们可以将图片保存至本地SD卡和内存中
  • 之后运行 App 时,优先访问内存中的图片缓存,若内存中没有,则加载本地SD卡中的图片
  • 总之,只在初次访问新内容时,才通过网络获取图片资源

4、代码的具体实现:有注释

  • 图片缓存工具类
/**
 * 图片加载工具类(三级缓存)
 * <p>
 * 注意:
 * 1.首次加载 Android App 时,肯定要通过网络交互来获取图片,之后我们可以将图片保存至本地SD卡和内存中
 * 2.之后运行 App 时,优先访问内存中的图片缓存,若内存中没有,则加载本地SD卡中的图片
 * 3.总之,只在初次访问新内容时,才通过网络获取图片资源
 * Created by zxp on 2016/6/17.
 */
public class ImageLoaderUtils {
   

    private static volatile ImageLoaderUtils imageLoaderUtils;

    private MenoryCacheUtils menoryCacheUtils;//内存缓存
    private LocalCacheUtils localCacheUtils;//本地缓存
    private NetBitmapUtils netBitmapUtils;//网络加载

    //单例模式
    public static ImageLoaderUtils getInstance() {
        if (null == imageLoaderUtils) {
            synchronized (ImageLoaderUtils.class) {
                if (null == imageLoaderUtils) {
                    imageLoaderUtils = new ImageLoaderUtils();
                }
            }
        }
        return imageLoaderUtils;
    }

    /**
     * 加载图片
     *
     * @param imageView 图片视图
     * @param url       图片地址
     */
    public void setImageViewFromBitmap(ImageView imageView, String url) {
        setImageViewFromBitmap(imageView, url, NetBitmapUtils.BITMAP_INSAMPLESIZE_ONE);
    }

    /**
     * 加载图片
     *
     * @param imageView      图片视图
     * @param url            图片地址
     * @param compressNumber 压缩倍率
     */
    public void setImageViewFromBitmap(ImageView
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值