App Delegate 的方法 willTerminate 啥时候执行?

Posted

技术标签:

【中文标题】App Delegate 的方法 willTerminate 啥时候执行?【英文标题】:When App Delegate's method willTerminate is executed?App Delegate 的方法 willTerminate 什么时候执行? 【发布时间】:2015-09-01 14:23:29 【问题描述】:

目前我正在测试AppDelegate 方法,当它们通过在每个方法中添加NSLog 来执行时。我不清楚的是何时执行方法applicationWillTerminate?我试图将应用程序置于后台,然后终止它,但未执行来自 Terminate 方法的日志。执行的是这样的:

2015-09-01 16:24:01.512 TestQuestions[2351:110179] didFinisLaunching
2015-09-01 16:24:02.530 TestQuestions[2351:110179] didBecomeActive
2015-09-01 16:24:05.864 TestQuestions[2351:110179] willResign
2015-09-01 16:24:06.322 TestQuestions[2351:110179] didEnterBackground

【问题讨论】:

查看这个关于你的问题的解释***.com/a/7818778/256738 【参考方案1】:

我不清楚的是方法 applicationWillTerminate 何时执行

几乎没有。它可以在某些罕见的情况下调用,例如,在后台播放音乐并从那里终止。但总的来说,您应该期望它永远不会被调用,因为当您被终止时,您已经被暂停并且您的代码不再运行(并且系统不会唤醒您只是告诉您它正在杀死您在后台)。

【讨论】:

感谢您的回答。该应用程序如何知道从后台终止? 你看我刚才说的了吗?它不“知道”,因为它已经被暂停了。它刚刚被杀死,就像 2001 年:太空漫游中的科学家们一样,他们在已经处于假死状态时被 HAL 9000 杀死。 好的。谢谢。这对我很有帮助。【参考方案2】:

applicationWillTerminate 将执行的一次是用户触摸(一次或两次)Home 按钮,然后将应用滑出屏幕。

我个人经常这样做,因为我触摸主页按钮来切换我想要激活的常用应用程序,而不是在我的 9 页图标中找到它们。

【讨论】:

以上是关于App Delegate 的方法 willTerminate 啥时候执行?的主要内容,如果未能解决你的问题,请参考以下文章

在另一个类的 App Delegate 调用方法中

Cocoa:从另一个类调用 App Delegate 方法

从 App Delegate (Swift) 调用 ViewControllers 方法或 Segue

Objective C:何时在 App Delegate 中使用方法以及何时在 View Controller 中使用方法

iOS 11 应该由 App Delegate 方法或仅由 UNDelegate 方法处理推送通知

在 App Delegate 中显示警报的方法失败,因为它的 rootViewController 不在 View Hierarcy 中