glide源码阅读系列(五)

2019就在眼前了,明天会更好,么?...

上次啊咱读了memoryCache,十分无趣,今天来看点更无趣的,没错啦就是人贱人爱的bitmapPool...

说是让你能够重复使用的bitmap...好吧,看看实现...

前两个都是废物,直接看LruBitmapPool...

这十分陌生啊,一脸懵逼...好吧,世上无难事只要肯放弃,咱弄简单点,装逼的方式简单点,看这个名字貌似是用LRU算法管理bitmap,保证这个bitmap的池子不超过最大限制,而这里用的LRU算法主要是LruPoolStrategy这个类提供,所以咱先去瞧瞧...

这...还是看实现吧...

哟呵,还分版本,大于4.4用SizeConfigStrategy小于用AttributeStrategy,看来SizeConfigStrategy要高级一点嘛,既然它要高级一点,那么我们就先看看AttributeStrategy,毕竟人也是由低级到高级进化而来的嘛(不一定哟)

可以看到这个属性策略类,主要是通过keyPool获取key,然后通过这个key从GroupedLinkedMap里取或者存bitmap,而这个keyPool里面是一个Queue,这个Queue里存储的key通过Bitmap的width, height,config保持唯一性。而这个GroupedLinkedMap内部维护了LRU算法,但是它不是单纯的LRU算法,对一点不单纯...

它说它维护的是最近最少使用的bitmap大小而不是最近最少使用的bitmap对象,当内存吃不消的时候这哥们会干掉最近最少使用的bitmap大小的那个bitmap,不错吧,LRU活学活用呀。

接下来看看SizeConfigStrategy:

可以看到SizeConfigStrategy在KeyPool和GroupedLinkedMap的基础上多了一个sortedSizes的HashMap,这个sortedSizes主要是通过Bitmap的config维护一个排序的size。另外这里的KeyPool不像AttributeStrategy的KeyPool那样通过Bitmap的width, height,config控制key,这里的keyPool是通过bitmap的size和config控制的

好,熟悉这些陌生的对象之后我们回到LruBitmapPool,我们看看它的核心方法put和get:

可以看到,先校验,不合法抛异常,超过限制大小就回收,然后就put到strategy里,计数器和大小该加的加,然后有一行莫名其妙的代码tracker.add(bitmap);这tracker是什么玩意儿?

好吧,这是个废物玩意儿,跟glide没几毛钱关系。

另外put里还有两个方法dump()和evict():

dump也是个废物

evict就是调整大小

然后来看get方法:

先从getDirtyOrNull这个方法取,不为空就擦一下颜色直接返回,为空就创建返回。接着看看这个getDirtyOrNull

先从缓存策略里取,为空就记录丢失状态,不为空就更新命中状态和大小然后返回结果。

好了看到这里我们知道了LruBitmapPool就是一个通过LRU算法保证内存中的bitmap不超过限制大小的管理类。

到此LruBitmapPool又读完了,没有学到任何东西,没关系,我们已经迈出了一小步,正所谓万丈高楼平地起,接下来我要下班接2019去了,下期再见。

glide源码阅读系列(六)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一年前读过的书《男人最有价值的投资——好好做父亲》,印象深刻。这本书的标题,也是自我鞭策的动力,甚至成了座...
  • 1. 昨天佳姐写了一篇《我的母亲》,读了以后,忽然发现,我们做子女的很不应该,对老人家不能老是吐槽了,要学佳姐那样...
    文晓玲阅读 430评论 7 7
  • 文/铜豌豆 独乐乐还是众乐乐,是孟子与齐宣王讨论过的问题,他俩讨论的结论是独乐乐不如众乐乐。在时下,这种说法也比较...
    Copperbean阅读 1,393评论 0 0
  • Spark是什么呢? Spark是一款为快速处理大数据通用计算引擎;负责读取数据,完成分布式计算;弥补了Hado...
    Zero兴阅读 449评论 0 0
  • 本人已二十岁,家境一般,在一所普通大学读书,感觉日子浑浑噩噩,有目标也不坚持追求,时常做白日梦,总想着一夜暴富,...
    小小花哥阅读 411评论 0 0

友情链接更多精彩内容