关于Fresco的三级缓存机制

这篇博客详细介绍了Fresco的三级缓存机制,包括Bitmap缓存、未解码图片的内存缓存和文件缓存。Bitmap缓存存储可立即使用的Bitmap对象,内存缓存保存未解码图片,文件缓存则存储原始压缩格式图片。在后台运行时,内存缓存会被清空,但文件缓存内容会保留。Fresco的缓存系统基于Producer/Consumer框架实现,确保高效图片获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三级缓存

1.Bitmap缓存

Bitmap缓存存储Bitmap对象,这些Bitmap对象可以立刻用来显示或者用于后处理

在5.0以下系统,Bitmap缓存位于ashmem,这样Bitmap对象的创建和释放将不会引发GC,更少的GC会使你的APP运行得更加流畅。

5.0及其以上系统,相比之下,内存管理有了很大改进,所以Bitmap缓存直接位于Java的heap上。

当应用在后台运行时,该内存会被清空。

2.未解码图片的内存缓存

这个缓存存储的是原始压缩格式的图片(如jpg格式)。从该缓存取到的图片在使用之前,需要先进行解码。

如果有调整大小,旋转,或者WebP编码转换工作需要完成,这些工作会在解码之前进行。

APP在后台时,这个缓存同样会被清空。

3.文件缓存

和未解码的内存缓存相似,文件缓存存储的是未解码的原始压缩格式的图片,在使用之前同样需要经过解码等处理。

图片获取顺序

和内存缓存不一样,APP在后台时,内容是不会被清空的。即使关机也不会。用户可以随时用系统的设置菜单中进行清空缓存操作。 
Fresco介绍:Android的一个新图片库中,我们已经知道Fresco的缓存是由Producer/Consumer的框架来实现的。 
图片获取是由各级Producer实现的,而将获取到的图片添加到缓存中是由各级Cusumer来实现的。 


http://blog.csdn.net/lufqnuli/article/details/51645556

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值