一旦applicationDidEnterBackground被激活,缓存图像就不会停留

时间:2013-07-17 18:18:07

标签: ios caching afnetworking sdwebimage

我遇到了一个问题,无论我用什么框架来缓存我的图像,从AFNetworking到SDWebImage的缓存技术都要写入磁盘。每次我按下主页按钮,然后返回应用程序。就像所有图像都必须被高速缓存一样。

我不知道从哪里开始寻找

为了将AFNetworking用于我的常规网络功能,例如JSON和图像上传,我使用https://gist.github.com/sibljon/5957892来解决命名空间冲突,因此我完全覆盖AFNetworkings UIImageView并坚持使用SDWebImage,而不是调用

感谢jonsibleyhis answer我不打电话

[imageFile setImageWithURL:[NSURL URLWithString:friendAvatar] placeholderImage:[UIImage imageNamed:@"defaultProfileImage.png"]];

我现在正在呼叫(现在只是前面的SD_),它允许我覆盖AFNetworkings缓存。正确的吗?

[imageFile SD_setImageWithURL:[NSURL URLWithString:friendAvatar] placeholderImage:[UIImage imageNamed:@"defaultProfileImage.png"]];

编辑UDPATE:

经过多次测试后,我发现该应用程序在恢复应用程序后正在清理缓存,而不是在它开始被暂停时(当按下主页按钮时) 可能导致这种情况的任何线索?

1 个答案:

答案 0 :(得分:3)

这有两种可能性。请注意清除 r 磁盘和清除 n 磁盘之间的区别。

  1. SDWebImage在收到cleanDisk后调用UIApplicationWillTerminateNotification。此方法删除早于其过期日期的文件。之后,它会清除从最旧到最新的文件,直到达到配置的最大缓存大小。

    如果您没有设置SDImageCache的maxCacheSize属性,则会忽略此属性。

    如果您没有设置SDImageCache的maxCacheAge属性,则默认为604800秒(1周)。

  2. 您是否在应用中调用了SDWebImage的clearDiskclearMemory方法?如果是这样,请在它们上设置断点以查找在恢复期间调用它们的原因。

  3. 如果#1没有解释,你就不会打电话给"清除"方法,你最好的办法是在[SDImageCache -cleanDisk]中设置一个断点并逐步查看它,看看你的缓存被清除的原因。