onResume/on在iOS应用程序上暂停



在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感兴趣。