iPhone应用程序终止时调用哪个函数?

Max*_*Max 7 iphone xcode ios5

我正在开发Xcode版本4.2.1和iOS 5.0中的项目.我想知道当你完全终止一个应用程序时将调用哪个函数,这意味着甚至用户强制在后台运行的应用程序从主屏幕终止的时间.我在假设

(void)applicationWillTerminate:(UIApplication *)application

将被调用,但事实证明,即使在后台终止应用程序后它也没有被调用.我基本上想要做的是调用我在应用程序完全终止之前创建的方法,因此需要知道在应用程序结束时调用哪个函数.

谢谢.

Nit*_*rad 22

仅当应用程序终止时未处于挂起状态时,才会调用" applicationWillTerminate "方法.

要理解这一点,考虑到当前您的应用程序处于前台活动状态,请执行以下两种情况:

案例1:当您单击主页按钮时,应用程序通过调用方法直接进入暂停状态 - (1)applicationWillResignActive然后(2)applicationDidEnterBackground.

现在,当您尝试退出/终止应用时,通过双击主页按钮然后从最近的应用屏幕向上滑动当前应用屏幕,应用处于暂停状态.因此,不会调用" applicationWillTerminate "方法.

案例2:当你双击 Home键,应用程序去调用方法无效状态- (1)applicationWillResignActive.

现在,当您尝试退出/终止应用时,通过从最近的应用屏幕向上滑动当前应用屏幕,应用在终止时处于非活动状态(未处于挂起状态).因此,将调用" applicationWillTerminate "方法.

看看Apple说的话: 在此输入图像描述

有关此外观的更多信息 - Apple关于applicationWillTerminate(_ :)的官方文档


ric*_*ter 6

以下是 iOS 4.0及更高版本上应用程序生命周期通知和委托消息的概述.简而言之...

您的应用通常永远不会看到willTerminate,因为系统通常只会在您的应用已暂停后(在后台)终止.一旦您的应用程序被暂停,它就没有机会采取行动(*),因此没有回调.

didEnterBackground代表消息或通知,应考虑您的最后一次机会,清理东西或之前可能终止保存状态.


(*)好吧,如果你的应用程序处于支持的后台执行模式之一(如音频,VoIP或导航),你的应用程序可以执行操作,但在这种情况下,它或者尚未暂停,或者它已被取消暂停特定于该背景模式的点.


Old*_*ier 2

如果应用程序已被暂停,它将不会收到进一步的通知。请留意didEnterBackground通知。