在我的swift应用程序中,当活动进入后台时,我正在注销,但是当控制中心打开时它会在后台运行。我的代码如下:
class MyApp:UIViewController{
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(appMovedToBackground), name: UIApplicationWillResignActiveNotification, object: nil)
func appMovedToBackground() {
print("App moved to background!")
self.logout()
}
}
当活动在后台运行时,应用程序是否有任何方式可以注销,但在控制中心打开时却没有。
答案 0 :(得分:5)
UIApplicationWillResignActiveNotification
不应用于检测应用何时转到后台。您应该使用UIApplicationDidEnterBackgroundNotification
代替,这只会在应用实际转到后台时调用,而不是在从顶部打开控制中心或通知时调用。
当控制中心打开时,您的应用程序确实变为非活动状态,因此会触发UIApplicationWillResignActiveNotification
通知,这是预期的行为
查看apple docs UIApplicationWillResignActiveNotification
当应用不再有效并失去焦点时发布。
应用在接收活动时处于活动状态。一个活跃的应用程序可以 据说有重点。它在发布后获得焦点,失去焦点 当弹出覆盖窗口或设备被锁定时,并获得 在设备解锁时进行对焦。
在您的情况下,会弹出一个覆盖窗口(控制中心),因此已触发此通知。