时间:2019 年 02 月 18 日 ~ 2019 年 02 月 22 日
第八周总结
一、Exception 和 Error 有什么区别
二、学习计划_Android 入门学习指南
三、LruCache 工作原理
① 内部使用 LinkedHashMap 双向链表,每次调用 LruCache#get(node)
后,会将该 node 节点移动到 LinkedHashMap 双向链表的尾部,这样下去,因此不经常使用的节点就留在 LinkedHashMap 双向链表的头部,经常使用的节点就自然留在了 LinkedHashMap 双向链表的尾部
② LruCache#get()
方法获取元素,如果 LinkedHashMap 双向链表中存在该元素则返回,返回前会对内存进行判断已经使用的缓存是否超出了我们指定的值,是则调用 LruCache#trimToSize()
方法,在该方法中会调用 LinkedHashMap#eldest()
方法获取 LinkedHashMap 双向链表中的头部元素(最近最少使用的元素)并将其移除,删除过程会一直持续到当前已经使用的缓存不再超出我们指定值