当前位置: 首页 > 知识库问答 >
问题:

何时调用applicationWillTerminate?

易书
2023-03-14

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

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

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

共有1个答案

乐正锦
2023-03-14

我刚刚探讨了这个问题(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;

}

 类似资料:
  • 问题内容: 什么时候 叫?我有一个活动,需要在调用onMeasure之后执行一项操作。 我的问题与此处未回答的问题相同。在查看文档指出onMeasure当被称为requestLayout()被调用时,它显然是对自身视图调用时它认为是不能再目前的范围内配合。 但是,这不能告诉我何时我的活动可以假设我的视图已被测量。我已使用此代码将ImageView扩展为TouchImageView。建议在这里使用o

  • ViewModels是独立于activity/片段生命周期还是仅仅独立于其配置更改。它们何时将不再存在,随后的onCleared()方法将被调用。viewModel可以与另一个activity共享吗? 一种情况: 这种分享是否可能,是否是一种好的做法。 此外,由于应用程序生命周期回调,onpause->onstop->ondestroy对这两个程序都是相同的 1.activity旋转和 2.act

  • Q1。我的理解是。但是超时场景呢? Q2。在哪里检查完整未来的默认超时设置?如何更改它?未来超时后会发生什么?(完成还是异常?) Q3。只要未来“完成”(完成或超时或任何最后阶段),我就需要。是否有保证在未来“完成”后调用的方法?我应该把放在哪里? 从新到完整的未来。更喜欢用Java8回答。谢谢你的帮助。

  • 我的问题可以是如何使用RXJava2的CompositeDisposable的重复?但要求再澄清一个疑点。根据接受的答案 在我的例子中,我使用片段作为我的视图(MVP中的视图层),在某些情况下,我将活动片段添加到backstack,这实际上不会杀死片段,而只是杀死它的视图。这意味着只调用而不调用。稍后,我可以回到后面堆栈中的相同片段,所以只有它的视图被重新创建。我有一个作为我的的成员,它保存订阅。

  • 问题内容: 现在,我使用一个静态布尔值来告诉初始化何时发生。有没有更简单的方法知道我已经调用了initialize? 谢谢!!! 解决了!!!!非常感谢您的评论。您需要在扩展应用程序的类中初始化解析,然后将其作为应用程序(而不是其他活动)添加到清单文件中。 :) 这是我使用Parse的课程: 这是我的android清单文件 问题答案: 创建一个应用程序类,然后在onCreate中初始化解析。 在此

  • 问题内容: 当消化周期正在发生的事情,我很困惑,是基于每50ms定时器它定期调用(因为它说,在这里,并暗示在这里,或者它的每一个进入的角度范围内(因为它说,事件发生后呼吁在这里,在这里还有这里? 重要的示例: 在我的模型中,我有一个名为3的变量。在我的HTML中,我有。触发按钮单击之类的事件并在控制器中引发一个处理程序,该处理程序内的代码为: 假设UI线程未被阻止,则单击按钮后用户将看到什么?他只