下拉通知中心时,为什么我的UIApplicationDelegate会收到applicationDidBecomeActive?

时间:2018-01-03 10:32:23

标签: ios

我在XCode中构建了一个没有任何功能的裸应用程序,并将日志语句放在applicationDidBecomeActive和applicationWillResignActive方法中。

当我向下滑动以显示通知中心时,我看到以下内容:

2018-01-03 10:18:16.867028 + 0000 BareProject [1165:2053601]辞职活动

2018-01-03 10:18:17.510713 + 0000 BareProject [1165:2053601]有效

2018-01-03 10:18:17.634805 + 0000 BareProject [1165:2053601]辞职活动

这是打算吗?我的代码在变为活动状态时做了很多工作,只是在120分钟后再次从地毯中取出,似乎文档说我应该使用applicationDidBecomeActive重新启动任务: https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622956-applicationdidbecomeactive?language=objc

我在ios 10.3上试过这个并且这种行为不存在。

1 个答案:

答案 0 :(得分:5)

实际上有两个问题,即对applicationDidBecomeActive:的意外调用以及对applicationWillResignActive:的重复调用。

“下拉”以显示用于在iOS 9上正常工作的通知中心。系统仅调用applicationWillResignActive:,只需使用iOS 9模拟器进行验证。

在iOS 11.2.6上,如您所描述的那样applicationDidBecomeActive:被调用,这似乎是一个Apple bug。在这种特殊情况下,系统行为与文档冲突。这是另一个示例,其中文档偏离您观察到的行为https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html#//apple_ref/doc/uid/TP40007072-CH8-SW10

  

当您的应用程序移回活动状态时,它会   applicationDidBecomeActive:方法应该反转任何步骤   采用applicationWillResignActive:方法。