应用程序进入后台之前是否有任何通知?

14

我正在开发一款iPhone应用程序,在应用程序进入后台之前需要进行一些操作,我知道有applicationWillEnterForeground和applicationDidEnterBackground方法。

但是找不到一个名为applicationWillEnterBackground的通知,有人知道如何做吗?


1
当你的应用程序进入后台时,你大约有5秒钟的时间来完成你需要做的任何事情。除了联系服务器并等待一些数据传输之外,这应该足够的时间来完成大多数任务。你需要做什么呢? - sangony
2个回答

24

在viewDidLoad或init中注册此通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil];

在 Swift 5.0 中

NotificationCenter.default.addObserver(self, selector: #selector(applicationWillResignActive(notification:)), name: UIApplication.willResignActiveNotification, object: nil)

@objc func applicationWillResignActive(notification: NSNotification) {
   //do a thing
}

在 Swift 4.0 中

NotificationCenter.default.addObserver(self, selector: #selector(applicationWillResignActive(notification:)), name: NSNotification.Name.UIApplicationWillResignActive, object: nil)

@objc func applicationWillResignActive(notification: NSNotification) {
   //do a thing
}

'appWillResignActive' 将是您自己的方法,它会对通知做出响应并执行某些操作。 - Matjan

1

applicationWillResignActive:

告诉代理应用程序即将变为非活动状态。


1
一个来电也会触发applicationWillResignActive,这不是应用进入后台的通知。 - bandw
如果你收到一个来电,应用程序将进入后台,然后你将收到我刚发布的回调。 - Markus Persson
10
如果你从系统得到一个UIAlertView警告框,即使你的应用程序在前台可见,它也会变为非活动状态。如果你关闭这个警告框,你将直接回到应用程序,而不是进入后台。请注意,这句话的原意已被尽可能保留,同时确保了翻译的准确性和易懂性。 - Maciej Swic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接