在我的if (!Process.GetProcessesByName("process_name").Length > 0)
{
// Is not running
}
中,我实施了AppDelegate
并设置了一个参数,该参数可以在整个应用中从applicationDidBecomeActive
中选取。
在我希望在应用程序变为活动状态时调用的类中,我添加了一个观察者:
NSUserDefaults
然后我通过运行应用程序来测试代码,然后按下主页按钮,从其图标重新启动应用程序。令我惊讶的是,AppDelegate中的NSNotificationCenter.defaultCenter().addObserver(self, selector: "appplicationDidBecomeActive:", name: UIApplicationDidBecomeActiveNotification, object: nil)
未被调用,并且我的类中的相同方法也未被调用。
然后我测试了一段类似的代码,但使用applicationDidBecomeActive
而不更改我班级中的观察者代码。
令我惊讶的是,这一切都奏效了。对于applicationWillEnterForeground
和我的班级中的断点,我可以看到我的AppDelegate
中的applicationWillEnterForeground
被调用,我班上的观察者关联方法也被调用。
我不清楚为什么在重新启动应用程序时实际上没有调用委托方法AppDelegate
为什么观察者如何知道应用程序变得活跃而没有代理方法知道它?