当控制中心打开时,为什么快速应用程序在后台运行?

sul*_* qg 0 nsnotificationcenter ios swift

在我的快速应用程序中,当活动将转到后台时,我正在注销,但是当控制中心打开时,它将在后台运行.我的代码如下:

class MyApp:UIViewController{
   NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(appMovedToBackground), name: UIApplicationWillResignActiveNotification, object: nil)

   func appMovedToBackground() {
        print("App moved to background!")
        self.logout() 
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在活动在后台运行时注销,但在控制中心打开时不会注销.

Bhu*_*hta 5

UIApplicationWillResignActiveNotification不应该用于检测应用程序何时进入后台.您应该使用UIApplicationDidEnterBackgroundNotification此选项,仅当应用程序实际转到后台时才会调用此选项,而不是在打开控制中心或顶部通知时调用.

当控制中心打开时,您的应用程序会变为非活动状态,因此UIApplicationWillResignActiveNotification会触发通知,这是预期的行为

看看苹果文档UIApplicationWillResignActiveNotification

当应用程序不再处于活动状态并失去焦点时发布.

应用在接收事件时处于活动状态.一个活跃的应用程序可以说是重点.它在启动后获得焦点,在弹出覆盖窗口或设备锁定时失去焦点,并在设备解锁时获得焦点.

在您的情况下,弹出了一个覆盖窗口(控制中心),因此该通知已被触发.