当用户暂时没有使用我的应用时,我的WKWebView
s'缓存有问题。
我想,那是因为iOS将我的应用放入Suspended
,然后出现内存不足的情况,因此我的应用程序被清除。
我阅读了Apple关于The App Life Cycle - Execution States for Apps
的文档特别是描述Suspended
状态的部分:
暂停 - 应用程序在后台但未执行代码。系统 将应用程序自动移动到此状态,并且之前不会通知它们 这样做。暂停时,应用程序仍保留在内存中但不会 执行任何代码。 当发生内存不足的情况时,系统可能会 清除暂停的应用程序,恕不另行通知,以腾出更多空间 前景应用。
这里有两个问题:
1)“清除”究竟意味着什么?该应用程序被杀?或者它仍然出现在应用程序选择器上(当双击主页按钮时)
2)在这里,我们可以看到无法知道应用程序何时被暂停。行。但是,如果用户回到应用程序,有没有办法知道该应用程序已被暂停?我找不到任何UIAppDelegate
的方法,但可能还有其他方法吗?
答案 0 :(得分:0)
该应用程序在后台但未执行代码
我认为Apple解释得很好,应用程序仍在内存中,但由于前台应用程序需要更多资源,因此无法执行后台线程。也许当内存恢复时,如果没有被操作系统杀死,你的应用程序可以再次执行后台代码。
当发生内存不足的情况时,你的应用程序可能被杀死(清除)。
那么有没有办法知道应用程序已被暂停?
当应用程序从操作系统中被杀死时,下次启动等于全新重启应用程序。对于这个AppDelegate没有提供实现此目的的方法。当app进入后台时你可以在UserDefaults中设置一个标志,然后在那个标志上做一些逻辑。
答案 1 :(得分:0)
清除 - 清除命令强制清空磁盘和内存缓存, 提供一个类似于状态的'冷盘缓冲区缓存' 重启后的操作系统。
引自here
根据文件
applicationDidEnterBackground: - 让您知道您的应用是现在 在后台运行,可能随时暂停。
这是唯一可以让您知道方法可能会进入暂停状态的方法
也
application:didFinishLaunchingWithOptions:现在就会告诉您 您的应用程序的启动过程即将完成,应用程序即将完成 跑。