当iOS从内存中删除应用程序时

时间:2014-11-12 16:02:44

标签: ios objective-c iphone

之前可能会问过这个问题,但我无法找到答案。如果我打开一个应用程序并按下主页按钮,它将进入后台,如果我再次打开它,则会调用应用程序委托方法,例如" applicationWillEnterForeground"。我需要多长时间才能在后台调用didFinishLaunchingWithOptions并启动新应用程序?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

由于

2 个答案:

答案 0 :(得分:1)

有许多因素需要考虑将您的应用从内存中删除(终止进程)。

最简单的是重启设备。重启后所有应用都关闭了。但是, Voip 的应用会在重新启动后自动启动到后台。

第二个也是最常见的一个是记忆压力。如果你的应用程序在后台并且系统用完了RAM,它会从占用最多RAM的应用程序开始杀死被挂起的应用程序并继续杀死它们直到它回收足够的内存。

另一个很常见的东西就是看门狗。当应用程序的主线程有足够的时间完成任务时,会有特定的情况。例如,当您从后台返回应用程序或用户按下主页按钮时,您有大约10秒来释放主线程。 (请记住,有一些情况,例如后台任务,音乐播放等,可以让您的应用在后台获得更多执行时间。)
但是,如果runloop在10左右没有返回,则会杀死一个典型的应用程序。

另一个值得一提的案例是,如果您的应用程序使用非常少的RAM。在其中一个WWDC会话中提到,如果您的应用程序消耗不超过16MB的RAM,它将被转储到闪存存储器,并在重新打开时恢复到内存,而不是被杀死。因此,在这种情况下,您的应用程序可能永远不会被杀死(我不确定重新启动,但我认为在重新启动和正常启动过程发生后忽略转储的映像)。

下一个是用户的显式操作,即进入多任务UI并向上滑动应用程序,这将终止应用程序。

我认为这总结了最常见的情况。

当然,您可能还想查看文档:{​​{3}}

答案 1 :(得分:0)

设备有多少内存?您的应用使用了多少内存?当您的应用收到didReceiveMemoryWarning时,您是否遵循最佳做法:?你在回到自己的应用程序之前打开其他应用程序吗?这是一个“依赖”的问题。

这里有什么大问题?为什么你想知道什么时候你的应用程序将从内存中清除?