在 iOS7 上,applicationDidEnterBackground 被调用了两次

Posted

技术标签:

【中文标题】在 iOS7 上,applicationDidEnterBackground 被调用了两次【英文标题】:applicationDidEnterBackground is called twice on iOS7 【发布时间】:2013-12-12 04:58:32 【问题描述】:

这是关于 ios7 上的 iOS 应用程序。 当一个活动的应用程序从多任务显示中被杀死时,我意识到 appDelegate 方法“applicationDidEnterBackground”似乎被调用了两次。 如果有人已经知道它,请告诉我它发生的原因。 (是 iOS7 的 bug 还是规范??)

【问题讨论】:

诡计,为什么我只调用一次? 该方法仅通过按主页按钮调用一次,但是当您从 MULTITASKING DISPLAY 终止 ACTIVE 应用程序时,该方法将再次调用。我认为这是kid0所说的iOS7错误。 这也发生在我的应用程序中。我看不出这被调用两次的充分理由。猜猜我们只需要保证方法是幂等的,这种方法自然应该是这样的。 【参考方案1】:

我的测试还表明,应用程序终止时 applicationDidEnterBackground 被调用了两次。甚至默认模板中的 cmets 都表示,如果应用程序支持后台执行(我测试的应用程序不支持),这应该只在终止时发生,我想一个调用就足够了。可能是一个错误,而不是 iOS 7 中的第一个错误

【讨论】:

thx :) 我将改用另一个委托方法“applicationWillResignActive”。看起来效果很好。 我可以确认这一点。我的应用程序在收到意外输入时其状态机显式崩溃。瞧,我看到这些崩溃通过 Crashlytics 出现在现场 :)

以上是关于在 iOS7 上,applicationDidEnterBackground 被调用了两次的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS7 上获取流派列表

在 iOS7 上更改 UISwitch 的 onTintColor?

UIButton没有在ios7上注册

UINavigationController 不能像在 iOS6.1 上一样在 iOS7 上同时工作

如何在 iOS7 上更改没有动画的 barTintColor?

在 iOS7 设备上测试使用 SDK6 开发的应用