主页按钮和 ApplicationState。重新启动应用程序时调用哪个委托方法?

Home button and ApplicationState. Which delegate method is called on relaunch of the app?

在我的 AppDelegate 中,我实现了 applicationDidBecomeActive 并设置了一个参数,该参数可以在整个应用程序中从 NSUserDefaults 中获取。

在 class 我希望在应用程序激活时调用我添加了一个观察者:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "appplicationDidBecomeActive:", name: UIApplicationDidBecomeActiveNotification, object: nil)

然后我通过 运行 应用程序测试代码,然后按下主页按钮,从其图标重新启动应用程序。令我惊讶的是,AppDelegate 中的 applicationDidBecomeActive 没有被调用,我的 class 中的相同方法也没有被调用。

然后我测试了一段类似的代码,但是 applicationWillEnterForeground 没有改变我 class 中的观察者代码。

令我惊讶的是,这次一切正常。在 AppDelegate 和我的 class 中都有断点,我可以看到我的 AppDelegate 中的 applicationWillEnterForeground 被调用,我的 class 中的观察者关联方法也是如此。

我不清楚的是为什么当我重新启动应用程序时委托方法 applicationDidBecomeActive 并没有被实际调用,而且观察者如何知道应用程序已激活 w/o 委托方法知道吗?

第一个想到的是Apple dev post

还有this post(有点旧但还是有用的)

流程可以表示为: