applicationWillTerminate 在 4.3 中被调用

Posted

技术标签:

【中文标题】applicationWillTerminate 在 4.3 中被调用【英文标题】:applicationWillTerminate gets called in 4.3 【发布时间】:2011-03-15 11:52:03 【问题描述】:

我已将 SDK 和 ios 更新到 4.3。但是当我退出我的应用程序(按主页按钮)时,会调用 applicationDidEnterBackground 和 applicationWillTerminate 方法。

在 4.2 中,此问题不存在 - 仅调用了 applicationDidEnterBackground。 可能是什么问题?和解决方案,如果有的话?

【问题讨论】:

这真的有问题吗?不过,我没有在参考文献中找到任何关于此更改的提及。假设,它可能是一种增强功能,可以让您在后台被杀死之前保存应用程序状态。 问题是我的应用程序失去了多任务处理能力。它每次都从头开始(applicationDidFinishLaunhing..)而不是用户按下主屏幕时离开的地方(applicationDidBecomeActive)。 如果您想让应用程序在后台运行,请尝试在 plist 中使用“UIApplicationExitsOnSuspend 已经试过了。存在问题。 在这种情况下,检查是否在您的应用程序被终止之前很久就写入了任何内容。如果您正在调用 OpenGL 驱动程序或执行后台禁止的类似活动,您可能应该在 applicationWillResignActive 中禁用所有此类活动,而不是在 applicationDidEnterBackground 方法中。 【参考方案1】:

the documentation 是这么说的:

对于支持 后台执行,这个方法是 用户一般不调用 退出应用程序,因为 应用程序只是移动到 在那种情况下的背景。然而,这 方法可能在某些情况下被调用 应用程序在哪里运行 背景(未暂停)和 系统需要终止它一段时间 原因。

在 4.2 和 4.3 之间在这方面没有任何重大变化,因此不清楚为什么您会看到变化。但无论是什么原因,这是记录在案的行为,因此您的应用应该能够处理它。

【讨论】:

好吧,现在问题已经解决了。当我在 applicationDidEnterBackground 中注释代码时,没有调用 applicationWillTerminate。然后我取消了注释代码并再次运行应用程序,令我惊讶的是,应用程序没有终止。希望,这种行为会继续下去。

以上是关于applicationWillTerminate 在 4.3 中被调用的主要内容,如果未能解决你的问题,请参考以下文章

“applicationWillTerminate”没有被迅速调用

applicationWillTerminate 何时调用,何时不调用

Swift - 在 applicationWillTerminate 中调用本地通知方法

为啥 UIWebView 不在我的应用程序委托中的 applicationWillTerminate: 处加载 NSURLRequest?

如何为启用了后台的 iOS 应用程序获取 applicationWillTerminate 通知?

在 applicationWillTerminate() 中找出应用程序在哪个视图上终止