当我的应用程序在iPad模拟器上处于后台状态时,我注意到我的视图控制器没有调用他们的didReceiveMemoryWarning
方法。更具体地说,我在日志中看到了对applicationDidEnterBackground
的调用,然后我点击了“模拟内存警告”按钮,然后我注意到任何didReceiveMemoryWarning
调用的特殊缺失。
然而,当我将应用程序带回前台时,我突然接到didReceiveMemoryWarning
电话,好像它已经排队了。
我在这里感到困惑的是,如果我的应用程序真的在后台,或者它只是暂停了。有没有办法在模拟器中讲述?
另外,如果它还没有被暂停,而且实际上只是在后台,那么我会觉得愚蠢,我无法处理didReceiveMemoryWarning
。因为这意味着只有前台应用程序才能处理内存警告以释放空间,这当然很奇怪,因为前台应用程序可能只是可能数十个正在运行的应用程序中的一个,如果它们会更有意义都可以释放记忆。
无论如何,主要问题是:为什么我没有didReceiveMemoryWarning
处于后台状态?而且,我真的被停职了吗?我怎么说?
答案 0 :(得分:8)
如果您没有启动后台任务,或在后台执行VOIP,位置跟踪或音频,那么您的应用会在applicationDidEnterBackground之后暂停。它不会收到任何通知。任何通知都会被保留(即使是在应用程序暂停后发生的通知),并在应用程序再次进入前台时发送到应用程序。
答案 1 :(得分:0)
我不认为是这样的。我可以在后台访问 didReceiveMemoryWarning 代码。一旦系统产生低记忆信号而不是一个好公民,我们应该释放记忆。这也有助于我们的应用程序终止系统。