有没有办法知道我的应用程序何时从Suspended切换到另一个状态?

时间:2016-10-27 15:35:09

标签: ios

当用户暂时没有使用我的应用时,我的WKWebView s'缓存有问题。

我想,那是因为iOS将我的应用放入Suspended,然后出现内存不足的情况,因此我的应用程序被清除。

我阅读了Apple关于The App Life Cycle - Execution States for Apps

的文档

特别是描述Suspended状态的部分:

  

暂停 - 应用程序在后台但未执行代码。系统   将应用程序自动移动到此状态,并且之前不会通知它们   这样做。暂停时,应用程序仍保留在内存中但不会   执行任何代码。 当发生内存不足的情况时,系统可能会   清除暂停的应用程序,恕不另行通知,以腾出更多空间   前景应用

这里有两个问题:

1)“清除”究竟意味着什么?该应用程序被杀?或者它仍然出现在应用程序选择器上(当双击主页按钮时)

2)在这里,我们可以看到无法知道应用程序何时被暂停。行。但是,如果用户回到应用程序,有没有办法知道该应用程序已被暂停?我找不到任何UIAppDelegate的方法,但可能还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

  

该应用程序在后台但未执行代码

我认为Apple解释得很好,应用程序仍在内存中,但由于前台应用程序需要更多资源,因此无法执行后台线程。也许当内存恢复时,如果没有被操作系统杀死,你的应用程序可以再次执行后台代码。

当发生内存不足的情况时,你的应用程序可能被杀死(清除)。

  

那么有没有办法知道应用程序已被暂停?

当应用程序从操作系统中被杀死时,下次启动等于全新重启应用程序。对于这个AppDelegate没有提供实现此目的的方法。当app进入后台时你可以在UserDefaults中设置一个标志,然后在那个标志上做一些逻辑。

答案 1 :(得分:0)

  

清除 - 清除命令强制清空磁盘和内存缓存,   提供一个类似于状态的'冷盘缓冲区缓存'   重启后的操作系统。

引自here

根据文件

  

applicationDidEnterBackground: - 让您知道您的应用是现在   在后台运行,可能随时暂停。

这是唯一可以让您知道方法可能会进入暂停状态的方法

  

application:didFinishLaunchingWithOptions:现在就会告诉您   您的应用程序的启动过程即将完成,应用程序即将完成   跑。