如何让一张幻灯片中的内容一个一个出来(制作幻灯片时,怎样让答案一个一个出来)
841
2022-05-30
文章目录
LruCache 应用场景
LruCache 算法原理
LruCache 实现
LruCache 参考
1. 缓存需求 :
处理大量数据时 , 为了提升性能 , 需要对其中的部分数据进行缓存 ;
涉及到使用缓存 , 和删除内存缓存操作 ,
使缓存的数据大小保持在一个稳定的水平 ;
2. 数据写入缓存 :
当需要使用某个数据时 , 将该数据写入缓存 ,
此时先对内存使用情况进行一次判定 ;
如果内存不足 , 需要移除缓存数据中的部分内容 , 然后再将数据写入缓存 ;
当然 , 如果缓存内存足够 , 直接写入缓存即可 ;
3. LruCache 引入 :
那么如何确定删除缓存中的哪些数据呢 , 这里就需要用到 LruCache 了 ;
LRU ( Least Recently Used 最近最少使用 ) 算法 :
内部维护了一个固定大小的队列 ( 先进先出 ) ;
放入元素时根据不同的情况执行不同的策略 ;
1. 缓存中是否有该元素 :
如果缓存中有该元素 , 那么将该元素放到队列的队头 ;
2. 缓存中没有该元素 :
如果缓存中没有改元素 , 那么需要插入该元素 ;
3. 缓存空间是否已满 :
如果缓存空间满了 , 需要将队尾元素删除 , 将元素放在队首 ;
4. 缓存空间没有满 :
如果缓存空间没有满 , 直接将元素放在队首 ;
缓存队列中 ,
队尾的元素就是最近最少使用的元素 ,
因为其一旦使用就会提升到队首 ,
因此当缓存满了以后 , 就删除队尾的元素 ;
1. Android 中的 LruCache :
其缓存空间就是一个 LinkHashMap 链表 ,
当调用 put 方法向其中放入新元素时 ,
就会判断这个 LinkHashMap 链表是已满 ,
如果没有空间 , 就将最后一个最近最少使用的元素删除 ;
2. LinkHashMap 实现 :
LinkHashMap 链表内部由数组和双向链表实现 ,
其能够保证与队列一致的性质 , 即先进先出 , 并保证其插入取出顺序的一致性 ;
当调用 get 方法获取其中的元素时 , 会将该元素提取到队头中 , 这符合了 LRU 算法的要求 ;
LruCache 参考 :
① Android LruCache 文档
② 谈谈LruCache算法的底层实现原理及其内部源码
③ 完全解析Andorid的缓存机制LruCache
Android
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。