提问者:小点点

何时调用applicationWillTerminate?


在什么情况下会调用applicationWillTerminate?例如,如果代码中出现崩溃,是否会调用它?

苹果的doc对此语焉不详,它只说当系统出于某种原因需要终止它的时候。

对于不支持后台执行或针对iOS3.x或更早版本链接的应用程序,当用户退出应用程序时,总是调用此方法。对于支持后台执行的app,用户退出app时一般不会调用此方法,因为在那种情况下app只是移动到后台。但在app在后台运行(未挂起),系统因故需要终止的情况下,可能会调用此方法。


共1个答案

匿名用户

我刚刚探讨了这个问题(iOS 9.2)。我有了一些结果。

因此,applicationwillterminate在用户终止应用程序而不将其切换到后台模式时会被调用:应用程序处于活动状态,用户双按Home按钮并抛出应用程序。

但如果用户首先将应用程序切换到后台,然后尝试终止应用程序,则不会调用applicationwillterminate

您可以查看以下内容:

- (void)applicationWillTerminate:(UIApplication *)application {
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"term"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

而且

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

    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"term"]){

        [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"term"];
        [[NSUserDefaults standardUserDefaults] synchronize];

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"WORKED" message:@"term works" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
        [alert show];

    }
...
return YES;

}