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

时间:2016-07-11 08:02:26

标签: ios swift nsnotificationcenter

在我的swift应用程序中,当活动进入后台时,我正在注销,但是当控制中心打开时它会在后台运行。我的代码如下:

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

   func appMovedToBackground() {
        print("App moved to background!")
        self.logout() 
    }
}

当活动在后台运行时,应用程序是否有任何方式可以注销,但在控制中心打开时却没有。

1 个答案:

答案 0 :(得分:5)

UIApplicationWillResignActiveNotification不应用于检测应用何时转到后台。您应该使用UIApplicationDidEnterBackgroundNotification代替,这只会在应用实际转到后台时调用,而不是在从顶部打开控制中心或通知时调用。

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

查看apple docs UIApplicationWillResignActiveNotification

  

当应用不再有效并失去焦点时发布。

     

应用在接收活动时处于活动状态。一个活跃的应用程序可以   据说有重点。它在发布后获得焦点,失去焦点   当弹出覆盖窗口或设备被锁定时,并获得   在设备解锁时进行对焦。

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