@@ -45,7 +45,7 @@ this.bitmapCache = new LruCache<String, Bitmap>(CACHE_SIZE) {
45
45
[ LruCache 效果展示] ( https://github.com/CaMnter/AndroidLife/blob/master/article/LruCache%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90_%E6%95%88%E6%9E%9C%E5%B1%95%E7%A4%BA.md )
46
46
47
47
48
- ## 4. 源码分析
48
+ ## 4. 源码分析
49
49
50
50
### 4.1 LruCache 原理概要解析
51
51
@@ -61,7 +61,7 @@ LruCache 就是 **利用 LinkedHashMap 的一个特性( accessOrder=true 基
61
61
62
62
- 4.` LinkedHashMap ` 是双向循环链表,然后每次 ` LruCache.get ` -> ` LinkedHashMap.get ` 的数据就被放到最末尾了。
63
63
64
- - 5.在 ` put ` 和 ` trimToSize ` 的方法执行下,如果发成数据量移除了 ,会优先移除掉最前面的数据(因为最新访问的数据在尾部)。
64
+ - 5.在 ` put ` 和 ` trimToSize ` 的方法执行下,如果发生数据量移除 ,会优先移除掉最前面的数据(因为最新访问的数据在尾部)。
65
65
66
66
** 具体解析在:** * 4.2* 、* 4.3* 、* 4.4* 、* 4.5* 。
67
67
@@ -74,7 +74,7 @@ LruCache 就是 **利用 LinkedHashMap 的一个特性( accessOrder=true 基
74
74
public LruCache(int maxSize) {
75
75
76
76
...
77
-
77
+
78
78
this . maxSize = maxSize;
79
79
/*
80
80
* 初始化LinkedHashMap
@@ -99,9 +99,9 @@ public LruCache(int maxSize) {
99
99
* 如果如果没有缓存的值,则返回 null。
100
100
*/
101
101
public final V get(K key) {
102
-
102
+
103
103
...
104
-
104
+
105
105
V mapValue;
106
106
synchronized (this ) {
107
107
// 关键点:LinkedHashMap每次get都会基于访问顺序来重整数据顺序
@@ -315,7 +315,7 @@ public void trimToSize(int maxSize) {
315
315
316
316
---
317
317
318
- 最后看看:
318
+ 最后看看:
319
319
320
320
### 4.8 覆写 entryRemoved 的作用
321
321
@@ -356,7 +356,7 @@ protected void entryRemoved(boolean evicted, K key, V oldValue, V newValue) {
356
356
357
357
## 5. 开源项目中的使用
358
358
359
- [ square/picasso] ( https://github.com/square/picasso )
359
+ [ square/picasso] ( https://github.com/square/picasso )
360
360
361
361
362
362
## 6. 总结
@@ -382,8 +382,3 @@ LruCache重要的几点:
382
382
383
383
384
384
[ LruCache 注释源码] ( https://github.com/CaMnter/AndroidLife/blob/master/app/src/main/java/com/camnter/newlife/utils/cache/LruCache.java )
385
-
386
-
387
-
388
-
389
-
0 commit comments