Glide的三级缓存有了解过么?

先来了解一下我们常说的图片三级缓存

一般是强引用,软引用和文件系统,Android系统中提供了LruCache,通过维护一个LinkedHashMap来保存我们需要的各种类型数据,例如我们这里需要的Bitmap。LruCache一般我们会设置为系统最大存储空间的八分之一,而它的机制就是我们常说的最近最少使用原则,如果Lru中的图片大小超过了默认大小,则会把最久使用的图片移除。

当图片被Lru移除时,我们需要手动将图片添加到软引用(SoftRefrence)中。需要维护一个软应用的集合在我们的项目中。

简单概括一下常用的三级缓存的流程:

先去Lru中找,有则直接取。

没有,则去SoftRefrence中找,有则取,同时将图片放回Lru中。

没有的话去文件系统找,有则取,同时将图片添加到Lru中。

没有就走下载图片逻辑,保存到文件系统中,并放到Lru中。

下面介绍一下Glide的缓存结构:

Glide缓存严格意义上说只有内存缓存和磁盘缓存,内存缓存中又分为Lru和弱引用缓存。

所以Glide的三级缓存可以分为:Lru缓存,弱引用缓存,磁盘缓存。

下面我们看一下Glide的读取顺序,这里有一点不同,我用的是Glide4.8版本,跟之前版本的写入顺序稍有不同。

截取部分源码:

android glide面试题,Android面试:80%的面试官关于Glide都会问这几个问题!【建议收藏】...相关推荐

  1. 2021年最新Android大厂面试题来袭!吊打面试官系列!

    面试经验 自己大大小小投了也有20多家公司,不过经历简历筛选以及笔试淘汰,最终就经历了7家公司的面试.下面我就把自己面试中问到的问题贴出来供大家参考,一些具体项目相关的就不贴了. 阿里巴巴 阿里是3月 ...

  2. android应用教程试题,ANDROID应用开发试题

    Android应用开发试题 一.选择题(每题2分,共30分) 1.下列不是手机操作系统的是?()D A.Android B.Window Mobile C.Apple IPhone IOS D.win ...

  3. android广播面试题,Android相关面试题

    面试过程中遇到的题集,都会摘要记录下来 一,Java部分 1.什么是反射? 2.反射的实现原理是什么? 3.Java线程sleep join yield wait notify notifyAll 4 ...

  4. android java 面试题,Android java 高级面试题库

    (一) java基础面试知识点 1,java中==和equals和hashCode的区别? 1."==" ==是运算符,用来比较两个值.两个对象的内存地址是否相等. 2." ...

  5. “约见”面试官系列之常见面试题之第九十一篇之简述Vue的生命周期适用于哪些场景(建议收藏)

    答:beforeCreate:在new一个vue实例后,只有一些默认的生命周期钩子和默认事件,其他的东西都还没创建.在beforeCreate生命周期执行的时候,data和methods中的数据都还没 ...

  6. “约见”面试官系列之常见面试题之第六十九篇之document.ready和onload的区别(建议收藏)

    document.ready和onload的区别为:加载程度bai不同du.执行次数不同.执行速度zhi不同. 一.加载程度不同 1.document.ready:在DOM加载完成dao后就可以可以对 ...

  7. “约见”面试官系列之常见面试题之第六十六篇之事件委托的原理和实现(建议收藏)

    事件委托(事件代理)原理:简单的说就是将事件交由别人来执行,就是将子元素的事件通过冒泡的形式交由父元素来执行. 为什么要用时间委托? 在JavaScript中,添加到页面上的事件处理程序数量将直接关系 ...

  8. “约见”面试官系列之常见面试题第四十三篇之页面输入url之后发生了什么?(建议收藏)

    本文主旨:帮助自己理清页面输入url地址之后的一个整体流程 首先,用户第一次向服务器发送对应url地址请求,此时,客户端没有缓存 1.用户输入url通过DNS解析为对应的IP地址. 2.应用层:HTT ...

  9. “约见”面试官系列之常见面试题之第一百零三篇之vue-router实现路由懒加载(建议收藏)

    vue异步组件 es提案的import() webpack的require,ensure() vue异步组件技术 ==== 异步加载 vue-router配置路由 , 使用vue的异步组件技术 , 可 ...

最新文章

  1. MySQL 实现一个字段赋值给另一个字段
  2. 在计算机安全系统中,探究免疫思想在计算机安全系统中的应用
  3. Prim和Dijkstra居然写起来一模一样
  4. MySQL - 视图
  5. 2018顺丰视觉岗笔试几个知识点
  6. CentOS7 安装Redis 单机版
  7. oracle中between and闭合性
  8. c#类的定义,c#中的关健字,C#标识符
  9. [hdu5628]Clarke and math(dirichlet卷积)
  10. 【bootcamp问答系统部署】
  11. 【图像加密】基于Arnold置乱图像加密解密Matlab代码
  12. 初识微信小程序 字体样式设置
  13. Laravel文档梳理7、视图
  14. pve 不订阅更新_魔兽世界PVE史:第二章 (四)国服那些年
  15. 《有限元分析基础教程》(曾攀)笔记一-二维杆单元有限元程序(基于Python)...
  16. 推荐一个视频播放器potplayer
  17. springCloud alibaba: Sentinel--服务容错
  18. 终于弄懂 CRC 循环冗余校验 辽
  19. Monkey的11种事件
  20. Java基础学习(二十一)之接口

热门文章

  1. 【PaddleOCR】一、PaddleOCR安装、测试(Win10)
  2. Linux系统中,python需要import上一级目录文件的解决办法
  3. IPC编程C语言,4. UNIX Domain Socket IPC
  4. 任正非详解华为不上市与家人不接班问题
  5. ora-01128,ora-00275
  6. Selenium一些特殊情况的处理:失去焦点、点击不生效、长页面处理、先触发事件才能动态加载的元素、日期输入
  7. Rabbitmq消息中心_消息追踪
  8. 数据库主键到底是用自增长(INT)好还是UUID好?
  9. python删除指定字符串之间所有行_python:删除包含字符串的pandas数据帧中的所有行...
  10. 基于Flexlive.CQP.Framework的C# 酷Q UDP实现