8

我注意到didReceiveMemoryWarning当我的应用程序在 iPad 模拟器上处于后台状态时,我的视图控制器没有调用它们的方法。更具体地说,我在日志中看到了调用applicationDidEnterBackground,然后我点击了“模拟内存警告”按钮,然后我注意到没有任何didReceiveMemoryWarning调用。

但是,当我将应用程序带回前台时,我突然didReceiveMemoryWarning接到电话,就好像它已经排队一样。

我在这里感到困惑的是,如果我的应用程序真的在后台,或者它只是完全暂停。有没有办法在模拟器中告诉?

另外,如果它还没有被暂停,并且真的只是在后台,那么我会觉得我无法处理很愚蠢didReceiveMemoryWarning。因为这意味着只有前台应用程序可以处理内存警告以释放空间,这当然很奇怪,因为前台应用程序可能只是可能运行的数十个应用程序之一,如果它们更有意义都可以释放内存。

无论如何,主要问题是:为什么我没有进入didReceiveMemoryWarning后台状态?还有,我真的被停职了吗?我怎么知道?

4

2 回答 2

8

如果您没有启动后台任务,或者在后台进行 VOIP、位置跟踪或音频,那么您的应用程序在 applicationDidEnterBackground 之后暂停。它不会收到任何通知。任何通知都会保留(即使是在应用程序暂停后发生的通知)并在应用程序再次进入前台时发送到应用程序。

于 2011-05-20T22:22:02.307 回答
0

我认为情况并非如此。我可以在后台访问didReceiveMemoryWarning代码。一旦系统产生低内存信号而不是作为一个好公民,我们应该释放内存。这也有助于我们的应用程序免于被系统终止。

于 2016-01-21T12:26:14.000 回答