首页 > 解决方案 > Swift:当应用程序处于前台和后台时,将图像临时存储在本地

问题描述

我试图在用户运行应用程序时在本地存储图像,并在应用程序处于后台时将图像保存在本地。当用户终止应用程序时,数据应该会在本地消失,并且只有在用户重新打开应用程序时才会加载。我最初知道如何加载图像,但我正在考虑在哪里/如何在本地存储图像。

我知道 Swift 有文件系统,但我想知道这是否是这种实现的最佳实践,或者是否有更好的解决方案。

标签: swiftimagebackgroundlocal-storageforeground

解决方案


完全按照您的意愿去做是不可能的,但您可以在功能上做类似的事情。

要缓存图像,您可以简单地使用现有的库,例如SDWebImage。它为您管理异步图像下载和缓存,并清除缓存的图像,您可以轻松完成

SDImageCache.sharedImageCache().clearMemory()
SDImageCache.sharedImageCache().clearDisk()

现在,至于何时要清除缓存,这有点棘手。

终止应用程序时无法清除缓存,因为无法可靠地检测应用程序何时终止。有UIApplicationDelegate.applicationWillTerminate方法,但如果应用程序在挂起状态下终止,则不会调用它。

但是您可以采取一种解决方法:只需在启动应用程序时清除缓存UIApplicationDelegate.application(_:didFinishLaunchingWithOptions:),这在功能上等同于您想要执行的操作。


推荐阅读