主页按钮和 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(有点旧但还是有用的)
流程可以表示为:
在我的 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(有点旧但还是有用的)
流程可以表示为: