SDWebImage清理缓存处理

 我来答
伊彩缘17
2022-06-20 · TA获得超过4880个赞
知道大有可为答主
回答量:4301
采纳率:100%
帮助的人:221万
展开全部
SDWebImage对图片的缓存分两种,一种是缓存到磁盘上,一种是缓存在内存中。在加载图片时,首先会从内存中寻找缓存图片,如果没有再从磁盘缓存中寻找,实在没有才会从网络请求图片。既然有缓存,那就免不了对缓存的清理,不然一直缓存不清理,会导致内存暴涨和磁盘空间的大量占用。

在使用SDWebImage加载图片的时候 其实已经初始化过SDImageCache单例了。在SDImageCache单例里添加了几个通知:

这三个通知分别是在app收到内存警告时清理缓存,在app将要退出时 删除旧的缓存文件,还有在app进入后台后,删除旧的缓存文件。也就是说,默认情况下SDWebImage已经为我们做了一些缓存的清理了。

SDImageCache提供了一个动态控制最大缓存图片像素数量的方法。像素和内存单位不同,下面我设置了最大像素为1000 * 1000 * 30 px 大概相当于几十兆的内存大小。这样我的app里缓存在内存中的的图片大小就会控制在几十兆的范围内。
[SDImageCache sharedImageCache].maxMemoryCost = 1000 * 1000 * 30;

在app回到后台和收到内存警告开始清理图片缓存时,会将磁盘里超过该值的缓存图片清理掉。

下面我设置的为最大50M的缓存空间
[SDImageCache sharedImageCache].config.maxCacheSize = 1024 * 1024 * 50;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式