Glide、Picasso原理

Glide、Picasso原理

参考网址:

https://www.cnblogs.com/huangjie123/p/6130665.html

[if !supportLists]1.    [endif]什么是Glide?

Glide是一个第三方的图片加载框架,这个框架比较先进,考虑的使用场景也很周全,在缓存这一功能上,Glide分为两个模块,一个是内存缓存,一个是硬盘缓存。

[if !supportLists]2.    [endif]Glide的缓存模块。

内存缓存,主要作用是防止应用重复将图片数据读取到内存中。

硬盘缓存,主要作用是防止应用重复从网络或其他地方重复下载和读取数据。

有内存缓存和硬盘缓存相互结合才构成Glide极佳的图片缓存效果。

[if !supportLists]3.    [endif]Glide三级缓存

内存缓存硬盘缓存网络缓存   

从内存缓存开始如果有则使用没有则去硬盘寻找 硬盘没有再去网络进行下载

内存缓存:new 一个Lrucache对象底层是一个map集合储存数据

硬盘缓存: 存到sd卡

网络缓存:加载网络图片下载图片

[if !supportLists]4.    [endif] 

分为三层,内存缓存,弱引用缓存,磁盘缓存

存入的顺序:弱引用,内存,磁盘

取出的顺序:内存,弱应用,磁盘

[if !supportLists]5.    [endif]为什么你要选择Glide图片加载框架?

除了上面说的Glide框架的特点,在使用Glide加载图片的时候,不用担心内存溢出的问题。比如说,我需要加载一张大图,Glide不会直接将图片的完整尺寸全部加载到内存中,而是用多少加载多少,Glide会自动判断ImageView的大小,然后只将ImageView计算出来的大小图片像素加载到内存中,帮助我们节省内存的开支。


Picasso原理

[if !supportLists]1.    [endif]什么是Picasso?

Picasso是android开发用来加载图片的一个三方框架。

[if !supportLists]2.    [endif]Picasso 缓存机制?

Picasso的缓存机制是LruCache和DiskLruCache组合实现缓存。Picasso的图片加载优先级是memory > disk > network, 可以设置setIndicatorsEnabled来判断图片是通过什么渠道加载的。

[if !supportLists]3.    [endif]什么是LruCache?

LruCache的主要核心实现是LinkHashMap,LinkHashMap是一个能按顺序存储的链表,其中有一个叫Lru的算法排序,能将最近添加或使用的文件放在表头,而很少用的文件放在表尾,当缓存的文件达到设置的阈值,则将表尾不常用的缓存文件删除。因此大多数情况下可以不用删除缓存,除非需要跟新某个图片列。如更换头像之类的。LruCache将缓存放于Memory中,因此当该应用进程结束的时候会自动被释放,为了数据的持久化,加快缓存读取因此还有个DiskLruCache。

[if !supportLists]4.  [endif]什么是DiskLruCache?

和LruCache类似,只不过是将缓存文件放到了disk上,当一个图片被缓存下来了之后,缓存目录下会看到3个文件,分别是xx.0,xx.1,journal,对应的目标文件是网络请求头文件,缓存文件,日志。Journal在DiskLruCache中还扮演了比较重要的作用,它保存了所有对缓存操作的记录,包括数据是否成功写入,读取记录及缓存文件的大小。同样当缓存文件超出了范围,DiskCache也会删除比较旧的数据,以及journal中旧的操作记录。


Glide与Picasso对比


[if !supportLists]1.  [endif]Picasso是加载全尺寸的图片到内存,然后让GPU来实时重绘大小,而Glide加载的大小和ImageView的大小是一致的,因此更小。当然,Picasso也可以指定加载的图片大小,但是你需要主动计算ImageView的大小。

[if !supportLists]2.  [endif]磁盘缓存的策略不一样。Picasso缓存的是全尺寸的,而Glide缓存的是跟ImageView尺寸相同的。如不管大小如何Picasso只缓存一个全尺寸,Glide则不同,它会为每种大小的ImageView缓存一次。

[if !supportLists]3.  [endif]Glide可以加载Gif动画,而picasso不能。

[if !supportLists]4.  [endif]Glide可以将任何本地视频解码成一张静态图片。

[if !supportLists]5.  [endif]Glide可以配置图片显示的动画,而picasso只有一种动画,fading in.

[if !supportLists]6.  [endif]Glide和Picasso都是非常优秀的库,Glide加载图像以及磁盘缓存的方式都要优于Picasso,速度更快,并且Glide更有利于减少内存溢出的发生,Gif动画更是亮点。不过Picasso的图片质量更高。使用Glide占用的内存先比picasso要高,可以更加项目的实际情况选择使用哪个框架。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容