在Android上,当我编写应用程序时,我需要实现onResume/onPause,以便我的活动转到后台并从前台返回。我已经在谷歌上搜索了我是否需要如何为iOS做同样的事情。但是我找不到任何有用的东西。你能告诉我我需要做什么来处理我的iOS应用程序进入后台和返回前台吗?
谢谢。
在Swift中,您可以使用
NotificationCenter.default.addObserver(self, selector: #selector(onPause), name:
UIApplication.willResignActiveNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(onResume), name:
UIApplication.willEnterForegroundNotification, object: nil)
带有
@objc func onPause() {
}
@objc func onResume() {
}
请注意,在实践中,我发现用UIApplication.didBecomeActiveNotification
替换UIApplication.willEnterForegroundNotification
效果更好,因为如果您单击两次"主页"按钮打开iOS的"打开应用程序"屏幕,然后立即单击该应用程序进行聚焦,onResume
也会被触发。
有一个专用类接收这些事件的委托回调(来自应用程序实例本身),通常称为XXXApplicationDelegate。
在那里,您需要实现应用程序生命周期的委托方法。
- (void)applicationWillResignActive:(UIApplication *)application {
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
}
- (void)applicationWillTerminate:(UIApplication *)application {
}
您正在寻找
override func viewWillDisappear(animated: Bool) {}
用于onPause
和
override func viewWillAppear(animated: Bool) {}
用于onResume
其他答案是指应用程序生命周期回调,而不是控制器(Android中的活动)回调。
您想了解一下关于应用程序生命周期的Apple文档。具体来说,您对application:didFinishLaunchingWithOptions:
、applicationDidBecomeActive:
和applicationDidEnterBackground
感兴趣。